Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Avance rapide | Suivant |
CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom HANDLER gestionnaire_appel [ VALIDATOR fonction_validation ]
En utilisant CREATE LANGUAGE, un utilisateur PostgreSQL peut enregistrer un nouveau langage de procédure sur une base de données PostgreSQL. En conséquence, les fonctions et les procédures de déclencheurs peuvent être définies dans ce nouveau langage. L'utilisateur doit avoir les droits de superutilisateur de PostgreSQL pour enregistrer un nouveau langage.
CREATE LANGUAGE associe réellement le nom du langage avec un gestionnaire d'appels qui est responsable de l'exécution des fonctions écrites dans le langage. Référez-vous à Section 33.3 pour plus d'informations sur les gestionnaires d'appels.
Notez que les langages de procédures sont locaux au niveau des bases de données individuelles. Pour rendre disponible un langage dans toutes les bases de données par défaut, il devrait être installé dans la base de données template1.
TRUSTED spécifie que le gestionnaire d'appels du langage est sûr, c'est-à-dire qu'il n'offre pas de fonctions surpassant les restrictions d'accès aux utilisateurs. Si ce mot clé est omis à l'enregistrement de ce langage, seuls les utilisateurs disposant du droit superutilisateur de PostgreSQL peuvent utiliser ce langage pour créer de nouvelles fonctions.
Aucune influence.
Le nom du nouveau langage de procédures. Le nom du langage n'est pas sensible à la casse. Le nom doit être unique parmi les langages de la base de données.
Pour une compatibilité descendante, le nom doit être entouré par des guillemets simples.
gestionnaire_appels est le nom d'une fonction précédemment enregistrée qui sera appelée pour exécuter les fonctions du langage de procédures. Le gestionnaire d'appels pour un langage de procédures doit être écrit dans un langage compilé comme le C avec la convention d'appel version 1 et enregistré sur PostgreSQL comme une fonction ne prenant aucun argument et retournant le type language_handler, un type spécifiquement utilisé pour identifier la fonction comme gestionnaire d'appels.
fonction_validation est le nom d'une fonction précédemment enregistrée qui sera appelée lorsqu'une nouveau fonction sera créée avec ce langage, pour valider la nouvelle fonction. Si aucune fonction de validation n'est spécifiée, alors une nouvelle fonction ne sera pas vérifiée à sa création. La fonction de validation prend un argument de type oid, qui sera l'OID de la fonction à créer, et renverra typiquement void.
Une fonction de validation inspecterait typiquement le corps de la
fonction pour s'assurer de la justesse syntaxique mais il regarderait
aussi d'autres propriétés de la fonction, par exemple si le langage ne
peut pas gérer certains types d'argument. Pour signaler une erreur, la
fonction de validation devrait utiliser la fonction
ereport()
. La valeur de retour de la fonction est
ignorée.
Cette commande ne devrait normalement pas être exécutée directement par les utilisateurs. Pour les langages de procédure fournis dans la distribution PostgreSQL, le programme createlang devrait être utilisé, qui installera aussi le bon gestionnaire d'appels. (createlang appellera CREATE LANGUAGE en interne.)
Dans les versions de PostgreSQL antérieures à la 7.3, il était nécessaire de déclarer les fonctions du gestionnaire comme renvoyant le type opaque, plutôt que language_handler. Pour supporter le chargement des anciens fichiers de sauvegarde, CREATE LANGUAGE acceptera une fonction déclarée renvoyant le type opaque, mais affichera un message d'avertissement et modifié le type renvoyé par la fonction en language_handler.
Utilisez la commande CREATE FUNCTION pour créer une nouvelle fonction.
Utilisez DROP LANGUAGE, ou encore mieux le programme droplang, pour supprimer les langages de procédures.
Le catalogue système pg_language
(voir Section 43.18) enregistre des informations sur les langages
actuellement installés. De plus, createlang a une option
pour lister les langages installés.
La définition d'un langage de procédures ne peut pas être modifiée une fois qu'il a été créé, à l'exception des droits.
Pour être capable d'utiliser un langage de procédures, un utilisateur doit avoir le droit USAGE. Le programme createlang donne automatiquement les droits à toute personne si le langage est « de confiance ».
Les deux commandes suivantes exécutées en séquence enregistreront un nouveau langage de procédures et le gestionnaire d'appels associé.
CREATE FUNCTION plsample_call_handler() RETURNS language_handler AS '$libdir/plsample' LANGUAGE C; CREATE LANGUAGE plsample HANDLER plsample_call_handler;
Précédent | Sommaire | Suivant |
CREATE INDEX | Niveau supérieur | CREATE OPERATOR |