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