历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.
5.11. 伪类型 #
PostgreSQL 的类型系统中包含一些特殊用途的条目,统称为伪类型。伪类型不能作为列数据类型使用,但可以用于声明函数的参数类型或结果类型。每一种伪类型都适用于这样的场景:函数的行为并不对应于简单地接受或返回某个特定 SQL 数据类型的值。表 5.21列出了现有的伪类型。
表 5.21. 伪类型
| 类型名 | 描述 |
|---|---|
record | 标识一个返回未指定行类型的函数 |
any | 表示一个函数接受任意输入数据类型 |
anyarray | 表示一个函数接受任意数组数据类型 |
void | 表示一个函数不返回值 |
trigger | 触发器函数声明为返回 trigger |
language_handler | 过程语言调用处理器声明为返回 language_handler |
cstring | 表示一个函数接受或返回以空字符结尾的 C 字符串 |
internal | 表示一个函数接受或返回服务器内部的数据类型 |
opaque | 一个已废弃的类型名,以前用于上述所有目的 |
用 C 编写的函数(无论是内置的还是动态装载的)都可以声明为接受或返回这些伪类型中的任意一种。函数作者必须自行确保,当伪类型被用作参数类型时,该函数的行为仍然安全。
用过程语言编写的函数只能在其实现语言允许的范围内使用伪类型。目前各过程语言都禁止把伪类型用作参数类型,并且只允许
void 作为结果类型(外加函数用作触发器时的
trigger)。
internal 伪类型用于声明只供数据库系统内部调用、而非由
SQL
查询直接调用的函数。如果一个函数至少有一个
internal 类型的参数,它就不能从
SQL 调用。为保持这一限制的类型安全,遵守下面的编码规则很重要:不要创建任何声明为返回
internal 的函数,除非它至少有一个
internal 参数。