# 8.21.伪类型
PostgreSQL类型系统包含许多特殊用途的条目,这些条目统称为伪类型。伪类型不能用作列数据类型,但可以用于声明函数的参数或结果类型。在函数的行为与简单地获取或返回特定SQL数据类型的值不一致的情况下,每个可用的伪类型都很有用。表8.27列出现有的伪类型。
表8.27.伪类型
名称 | 描述 |
---|---|
任何 | 指示函数接受任何输入数据类型。 |
任何元素 | 指示函数接受任何数据类型(请参见第38.2.5节). |
任意数组 | 指示函数接受任何数组数据类型(请参见第38.2.5节). |
安诺纳雷 | 指示函数接受任何非数组数据类型(请参见第38.2.5节). |
任何枚举 | 指示函数接受任何枚举数据类型(请参见第38.2.5节和第8.7节). |
任意范围 | 指示函数接受任何范围数据类型(请参阅第38.2.5节和第8.17节). |
任意多量程 | 指示函数接受任何多范围数据类型(请参见第38.2.5节和第8.17节). |
任何兼容的 | 指示函数接受任何数据类型,并自动将多个参数升级为公共数据类型(请参见第38.2.5节). |
随便什么 | 指示函数接受任何数组数据类型,并自动将多个参数升级为公共数据类型(请参见第38.2.5节). |
任何兼容的Narray | 指示函数接受任何非数组数据类型,并自动将多个参数升级为公共数据类型(请参见第38.2.5节). |
任何兼容语言 | 指示函数接受任何范围数据类型,并自动将多个参数升级为公共数据类型(请参见第38.2.5节和第8.17节). |
任意兼容多量程 | 指示函数接受任何多范围数据类型,并自动将多个参数升级为公共数据类型(请参见第38.2.5节和第8.17节). |
cstring | 指示函数接受或返回以null结尾的C字符串。 |
内部的 | 指示函数接受或返回服务器内部数据类型。 |
语言处理器 | 程序语言调用处理程序被声明为返回语言处理器 . |
fdw_处理器 | 声明要返回的外部数据包装处理程序fdw_处理器 . |
表_am _handler | 表访问方法处理程序被声明为返回表_am _handler . |
索引处理程序 | 声明要返回的索引访问方法处理程序索引处理程序 . |
tsm_handler | 一个tablesample方法处理程序被声明为返回tsm_handler . |
记录 | 标识接受或返回未指定行类型的函数。 |
触发 | 触发器函数被声明为返回触发 |
事件触发 | 一个事件触发器函数被声明为返回事件触发。 |
pg_ddl_命令 | 标识可用于事件触发器的DDL命令的表示形式。 |
无效的 | 指示函数不返回任何值。 |
未知的 | 标识尚未解析的类型,例如未修饰的字符串文字。 |
用C编写的函数(无论是内置的还是动态加载的)可以声明为接受或返回这些伪类型中的任何一种。当伪类型用作参数类型时,函数作者需要确保函数安全运行。
用过程语言编写的函数只能在其实现语言允许的情况下使用伪类型。目前,大多数过程语言都禁止使用伪类型作为参数类型,并且只允许无效的
和记录
因此,类型(加上触发
或事件触发
当函数用作触发器或事件触发器时)。有些还支持使用多态伪类型的多态函数,如上文所示,并在中详细讨论第38.2.5节.
这个内部的
伪类型用于声明仅由数据库系统内部调用的函数,而不是在SQL查询中直接调用的函数。如果函数至少有一个内部的
-类型参数,则无法从SQL调用它。为了保护此限制的类型安全性,必须遵循以下编码规则:不要创建任何声明为返回的函数内部的
除非它至少有一个内部的
论点