Les fonctions internes sont des fonctions écrites en C qui ont été
liées de façon statique dans le serveur PostgreSQL™. Le « corps » de la définition de la fonction spécifie
le nom en langage C de la fonction, qui n'est pas obligatoirement le
même que le nom déclaré pour l'utilisation en SQL (pour des raisons
de rétro compatibilité, un corps vide est accepté pour signifier que
le nom de la fonction en langage C est le même que le nom SQL).
Normalement, toutes les fonctions internes présentes dans le serveur
sont déclarées pendant l'initialisation du groupe de base de données
(initdb) mais un
utilisateur peut utiliser la commande CREATE FUNCTION pour créer des noms
d'alias supplémentaires pour une fonction interne. Les fonctions
internes sont déclarées dans la commande CREATE FUNCTION avec le nom de
langage internal. Par exemple, pour créer un
alias de la fonction sqrt :
CREATE FUNCTION racine_carree(double precision) RETURNS double precision AS
'dsqrt'
LANGUAGE internal STRICT;
(la plupart des fonctions internes doivent être déclarées
« STRICT »)
Note
Toutes les fonctions « prédéfinies » ne sont pas internes (au sens
explicité ci-dessus). Quelques fonctions prédéfinies sont écrites
en SQL.