| Documentation PostgreSQL 7.2 | ||
|---|---|---|
| <<< Previous | Next >>> | |
En utilisant CREATE LANGUAGE, un utilisateur PostgreSQLpeut enregistrer un nouveau langage procedural avec une base PostgreSQL. En conséquence, les fonctions et procédures déclencheur peuvent être définies dans ce nouveau langage. L'utilisateur doit avoir les droits de superutilisateur PostgreSQL pour enregistrer ce langage.
CREATE LANGUAGE associe effectivement le nom de langage avec le lanceur d'appel qui est responsable de l'exécution des fonctions écrites dans ce langage. Voir le Guide du programmeur pour plus d'information sur les lanceurs d'appel.
Notez que les langages procéduraux sont propres aux bases individuelles. Pour faire un langage disponible pour toutes les bases par défaut, il devrait être installé dans la base template1.
TRUSTED spécifie que le lanceur d'appel pour le langage est sûr; ainsi, il ne permet pas à un utilisateur non privilégié d'outrepasser les restrictions d'accès. Si ce mot-clé est omis lors de l'enregistrement du langage, seuls les utilisateurs avec les droits de superutilisateur pourront utiliser ce langage pour créer de nouvelles fonctions.
Ceci n'est que du bruit.
Le nom du nouveau langage procédural. Le nom de langage n'est pas sensible à la casse. Un langage procédural ne peut pas outrepasser un des langages natifs de PostgreSQL.
Pour la compatibilité d'arrière-plan, le nom doit être inséré dans des guillemets.
call_handler est le nom de la fonction antérieurement enregistrée qui sera appelée pour exécuter les fonctions du langage procédural. Le lanceur d'appel pour un langage procédural doit être écrit dans un langage compilé comme le C avec la version 1 de convention d'appel et enregistré dans PostgreSQL comme une fonction ne prenant pas d'arguments et retournant le type opaque, un paramètre fictif pour les types non spécifiés ou non définis.
Cette commande ne doit pas normalement être exécutée par les utilisateurs. Pour les langages procéduraux fournis dans la distribution PostgreSQL, le script createlang(1) devra être utilisé, lequel installera le lanceur d'appel correct. (createlang appellera CREATE LANGUAGE en interne).
Utilisez la commande CREATE FUNCTIONpour créer une nouvelle fonction.
Utilisez DROP LANGUAGE, ou mieux encore le script droplang(1), pour supprimer les langages procéduraux.
Le catalogue système pg_language enregistre les informations concernant les langages procéduraux installés.
Table "pg_language" Attribute | Type | Modifier ---------------+---------+---------- lanname | name | lanispl | boolean | lanpltrusted | boolean | lanplcallfoid | oid | lancompiler | text | lanname | lanispl | lanpltrusted | lanplcallfoid | lancompiler -------------+---------+--------------+---------------+------------- internal | f | f | 0 | n/a C | f | f | 0 | /bin/cc sql | f | f | 0 | postgres |
Maintenant, on ne peut plus changer la définition du langage procédural un fois créé.
Les deux commandes suivantes exécutées dans la séquence enregistreront un nouveau langage procédural et le lanceur d'appel associé.
CREATE FUNCTION plsample_call_handler () RETURNS opaque
AS '$libdir/plsample'
LANGUAGE C;
CREATE LANGUAGE plsample
HANDLER plsample_call_handler; |
La commande CREATE LANGUAGE est apparue pour la première fois dans la version 6.3 de PostgreSQL.
createlang(1), CREATE FUNCTION, droplang(1), DROP LANGUAGE, Guide du programmeur POstgreSQL.
| <<< Previous | Home | Next >>> |
| CREATE INDEX | Up | CREATE OPERATOR |