Las funciones internas son funciones escritas en C que se han enlazado estáticamente dentro del servidor de PostgreSQL. El “cuerpo” de la definición de la función especifica el nombre de la función en el lenguaje C, el cual no necesita ser el mismo que el nombre que se está declarando para su uso en SQL. (Por razones de compatibilidad hacia atrás, se acepta un cuerpo vacío para indicar que el nombre de la función en el lenguaje C es el mismo que el nombre SQL).
Normalmente, todas las funciones internas presentes en el
servidor se declaran durante la inicialización del clúster de la base de datos
(consulta la Section 18.2),
pero un usuario podría utilizar CREATE FUNCTION
para crear alias adicionales para una función interna.
Las funciones internas se declaran en CREATE FUNCTION
con el nombre de lenguaje internal. Por ejemplo, para
crear un alias para la función sqrt:
CREATE FUNCTION square_root(double precision) RETURNS double precision
AS 'dsqrt'
LANGUAGE internal
STRICT;
(La mayoría de las funciones internas esperan ser declaradas como “strict”).
No todas las funciones “predefinidas” son “internas” en el sentido mencionado arriba. Algunas funciones predefinidas están escritas en SQL.