Les langages de procédures stockées
ne sont pas disponibles par défaut dans une base de données.
Ils doivent être installés, dans chaque base de
données, avec la commande CREATE
LANGUAGE ou avec la commande système équivalente createlang. Il est possible d’installer
un langage dans une base de données modèle comme template1, pour le rendre automatiquement
disponible dans les bases de données créées à partir
de ce modèle.
1. SQL
Une fonction du type SQL peut exécuter
une liste de requête SQL.
Il n’est pas possible d’utiliser dans ce type
de fonction des commandes de contrôles de transactions
comme SAVEPOINT ou COMMIT, ni des commandes utilitaires,
comme VACUUM, qui ne peuvent pas être
exécutées au sein d’une transaction.
Les ordres DML comme SELECT, INSERT, UPDATE, DELETE et les ordres DDL comme CREATE, ALTER ou DROP peuvent être exécutés.
Le corps de la fonction peut être encadré soit
par de simples guillemets, soit par des doubles dollars, particulièrement
utiles lorsque les requêtes elles-mêmes contiennent de
simples guillemets.
Seules les données du dernier ordre
SQL peuvent être retournées. Par défaut, une
fonction ne retournant qu’un seul tuple, seule la première
ligne du dernier enregistrement sera retournée, quel que
soit le tri appliqué dans cette requête. ...