PostgreSQL 类型系统包含一些特殊用途的条目,统称为伪类型。伪类型不能用作列数据类型,但可以用作函数的参数或结果类型。每种可用的伪类型在函数的行为不对应于简单地获取或返回特定值的特定情况下都很有用SQL数据类型。表 8.27 列出了现有的伪类型。
表 8.27. 伪类型
名称 | 描述 |
---|---|
any |
指示函数接受任何输入数据类型。 |
anyelement |
指示函数接受任何数据类型(参见第 36.2.5 节)。 |
anyarray |
指示函数接受任何数组数据类型(参见第 36.2.5 节)。 |
anynonarray |
指示函数接受任何非数组数据类型(参见第 36.2.5 节)。 |
anyenum |
指示函数接受任何枚举数据类型(参见第 36.2.5 节 和第 8.7 节)。 |
anyrange |
指示函数接受任何范围数据类型(参见第 36.2.5 节 和第 8.17 节)。 |
anymultirange |
指示函数接受任何多范围数据类型(参见第 36.2.5 节 和第 8.17 节)。 |
anycompatible |
指示函数接受任何数据类型,并自动将多个参数提升到公共数据类型(参见第 36.2.5 节)。 |
anycompatiblearray |
指示函数接受任何数组数据类型,并自动将多个参数提升到公共数据类型(参见第 36.2.5 节)。 |
anycompatiblenonarray |
指示函数接受任何非数组数据类型,并自动将多个参数提升到公共数据类型(参见第 36.2.5 节)。 |
anycompatiblerange |
指示函数接受任何范围数据类型,并自动将多个参数提升到公共数据类型(参见第 36.2.5 节 和第 8.17 节)。 |
anycompatiblemultirange |
指示函数接受任何多范围数据类型,并自动将多个参数提升到公共数据类型(参见第 36.2.5 节 和第 8.17 节)。 |
cstring |
指示函数接受或返回以 null 结尾的 C 字符串。 |
internal |
指示函数接受或返回服务器内部数据类型。 |
language_handler |
过程语言调用处理程序声明为返回 language_handler 。 |
fdw_handler |
外部数据包装器处理程序声明为返回 fdw_handler 。 |
table_am_handler |
表访问方法处理程序声明为返回 table_am_handler 。 |
index_am_handler |
索引访问方法处理程序声明为返回 index_am_handler 。 |
tsm_handler |
表采样方法处理程序声明为返回 tsm_handler 。 |
record |
标识接受或返回未指定行类型的函数。 |
trigger |
触发器函数声明为返回 trigger。 |
event_trigger |
事件触发器函数声明为返回 event_trigger。 |
pg_ddl_command |
标识事件触发器可用的 DDL 命令的表示形式。 |
void |
指示函数不返回值。 |
unknown |
标识尚未解析的类型,例如,未装饰的字符串文字的类型。 |
用 C 编写的函数(无论是内置函数还是动态加载函数)都可以声明为接受或返回任何这些伪类型。函数作者有责任确保函数在使用伪类型作为参数类型时会安全地运行。
用过程语言编写的函数只能在其实现语言允许的情况下使用伪类型。目前,大多数过程语言禁止将伪类型用作参数类型,并且仅允许 void
和 record
作为结果类型(以及当函数用作触发器或事件触发器时使用 trigger
或 event_trigger
)。有些还支持使用上面显示的多态伪类型的多态函数,这些函数在第 36.2.5 节中进行了详细讨论。
internal
伪类型用于声明仅供数据库系统内部调用且不通过在 中直接调用调用的函数SQL查询中。如果函数至少有一个 internal
类型参数,则无法从SQL调用。为了保持此限制的类型安全,务必遵循以下编码规则:除非函数至少有一个 internal
参数,否则不要创建任何声明为返回 internal
的函数。
如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符的内容或需要进一步澄清的内容,请使用此表单报告文档问题。