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:

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)

http://www.postgresql.org

Documentation Française

http://www.postgresqlfr.org/

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.