↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 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 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

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 参数。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。