pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
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 参数。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。