Les langages de procédure
Les fonctions utilisateurs
Le PL/PGSQL n'est pas le seul langage supporté. Voici une présentation rapide des autres possibilités offertes par l'extensibilité de PostgreSQL.
Fonctions en C
Il est possible d'utiliser le C comme fonctions au même titre que le PL.PGSQL. Il s'agit de fonctions compilées sous formes d' objets dynamiques chargeables.
Le stockage des fonctions se fait alors dans des fichiers organisées sous forme de bibliothèques partagées.
Ces fonctions sont chargées par le serveur à la demande.
Le C peut être utilisé en cas de traitements importants (génération d'images par exemple) et de gros besoins de performance.
Fonctions internes
Les fonctions internes permettent entre autres de lier statiquement les fonctions en C dans le serveur PostgreSQL. Ces fonctions sont stockées dans les bases.
Fonctions SQL
Il est bien évidemment possible d'écrire des fonctions dans le langage SQL standard, ce qui permet d'intégrer la puissance des requetes sur serveur, mais sans les possibilités d'un langage de procédures (PL).
Les fonctions PL
Langages de procédure (PL)
Il existe différents langages de procédure intégrés à PostgreSQL:
- PL/Tcl
- PL/Perl
- PL/Python
- PL/pgSQL
Il est aussi possible d'écrire ses propres gestionnaire de langage, et donc d'intégrer à un SGBD PostgreSQL n'importe quel langage: Java par exemple....
Principes
Le principe utilisé est alors le même que pour le C: Compilées, mais aussi interpétées, les fonctions sont alors externe au serveur et lui sont fournies comme des modules chargeables.
Installation automatique des langages de procédure
Installation du PL/pgSQL
Le gestionnaire pour le langage PL/PGSQL est compilé et installé dans le répertoire des bibliothèques (<< lib >>) par défaut à l'installation de PostgreSQL, et ne requiert aucune option particulière.
Il suffit de l'activer.
Autres langages standards
Les autres langages standards nécessitent quand à eux des options lors de l'installation du serveur pour la compilation et l'installation des bibliothèques.
Activation d'un langage
Pour activer un langage, il suffit d'utiliser la commande createlang dans une console PostgreSQL. Un langage ne l'active pas pour la totalité du SGBD, mais pour une base en particulier.
Exemple:
$ createlang plsql nom_de_la_base
Installation manuelle des langages de procédure
Compilation et installation du gestionnaire de langage
cc -fpic -c plpgsql.c //position indépendant code
cc -shared -o plpgsql.so plpgsql.o //librairie partagée
Déclaration du gestionnaire de langage
CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS
'$libdir/plpgsql' LANGUAGE C;
Validation du langage
CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS
'$libdir/plpgsql' LANGUAGE C;
Création du langage
CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql
HANDLER plpgsql_call_handler
VALIDATOR plpgsql_validator;
Sources
Documentation Officielle (GB)
Documentation Française
Conclusion
Le PL/PGSQL est un langage simple, proche de la simplicité du SQL standard, et permet une utilisation optimale du SGBD.
Il procure une séparation réelle du SGBD et des applications en augmentant netement la clarté du code et la maintenablité du code et en procurant des hausses de préformances significatives.
Ce système peut être un élément permettant de choisir PostgreSQL plutot qu'un autre SGBD, car il donne un bon aperçu de son extensibilité, de ses performances, et permet de mettre PosgreSQL à un niveau de fonctionnalité proche de celui d''Oracle, avec lequel il est très proche, voire compatible.