↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
历史版本。 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 参数。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.