内部函数是那些用 C 写的函数,它们已经通过静态链接的方式链接进入 PostgreSQL 服务器进程里面。 函数定义的"函数体"给出函数的 C 语言的名称,它不必与定义给 SQL 使用的名称相同。 (出于向下兼容考虑,一个空的函数体可以被接受,意味着 C 函数名与 SQL 函数名相同。)
通常, 所有在服务器里出现的内部函数都在数据库初始化时(initdb)定义。 但是用户可以用 CREATE FUNCTION 为内部函数创建额外的别名。 内部函数在 CREATE FUNCTION 命令里是带着语言名字 internal声明的。 比如,要给 sqrt 函数创建一个别名:
CREATE FUNCTION square_root(double precision) RETURNS double precision AS 'dsqrt' LANGUAGE internal STRICT;
(大多数内部函数都应该声明为 "strict"。)
注意: 并非所有"预定义"的函数都象上面那样是"内部的"。 有些预定义的函数是用 SQL 写的。