内部函数是使用 C 编写的函数,已被静态链接到 PostgreSQL 服务器。函数定义的 “body” 指定函数的 C 语言名称,该名称不一定要与声明为 SQL 用途的名称相同。(出于向后兼容的考虑,接受空 body,表示 C 语言函数名称与 SQL 名称相同。)
通常,服务器中现有的所有内部函数在数据库集群初始化时声明(参见 第 18.2 节),但是用户可以使用 CREATE FUNCTION
为内部函数创建其他别名字符串。内部函数是在 CREATE FUNCTION
中声明的,语言名称为 internal
。例如,为 sqrt
函数创建一个别名
CREATE FUNCTION square_root(double precision) RETURNS double precision AS 'dsqrt' LANGUAGE internal STRICT;
(大多数内部函数希望被声明为 “strict”。)
并非所有 “预定义” 函数都是上述意义上的 “内部” 函数。一些预定义函数是用 SQL 编写的。