PL/SQL (Procedural Language /SQL) est un langage de programmation qui intègre nativement SQL et permet de programmer de manière procédurale/structurée.
Il est spécifique à Oracle. Pour SQL Server il existe par exemple un équivallent : TRANSAC SQL et pour MySQL la partie programmatique est une simple extension du langae SQL (non standard donc).
Globalement, avec PL/SQL on aura à notre disposition un vrai langage de programmation assez rudimentaire, moins intuitif mais aussi plus puissant que le SQL. Les 2 langages sont éminemment complémentaires.
Les principaux mécanismes procéduraux offert par PL sont les suivants:
Structures iteratives : WHILE …LOOP, FOR …LOOP, LOOP simple
Structures conditionnelles :
IF …THEN …ELSE | ELSEIF …ENDIF, CASE …
Declaration des curseurs et des tableaux
Declaration de variables
Affectation de valeurs aux variables
Branchements : GOTO, EXIT
Exceptions : EXCEPTION
Les principaux avantages / inconvénients sont les suivants :
- performance (relative): permet le traitement par bloc de SQL et donc optimise le trafic réseau,
- portabilité du code (d’Oracle vers Oracle!)
- intégration à la base (donc documentation possible, le code devient une donnée, synchronistaion code / données, migration/upgrade simplifiée)
- sécurité (code précompilé et gestion de droits spécifique
- permet des traitements plus complexes (Algorithmique) notamment pour la gestion des cas particuliers
- l’utilisation de librairies standards prédéfinies (supplied PLSQL packages, comme les RDBMS_xxx),
- un paramétrage et la création d’ordres SQL dynamiques
- typage des données explicite, implicite ou dynamique
- ne dispense pas de connaître le SQL
- langage daté: procédural rudimentaire, pas d’objets, de pointeurs, de récursivité, pas de framework, architecture lourde
- gestion d’erreurs rudimentaire
- non portable (nécessité de recoder si on migre vers un autre SGBDR)
Les différentes formes de code
Le PL/SQL peut être utilisé sous 3 formes :
- un bloc de code, executé comme une commande SQL, via un interpréteur standard (SQL+ ou iSQL*PLus)
- un fichier de commande PL/SQL
- un programme stocké (procédure, fonction, package ou trigger)
Les Blocs PLSQL
Les blocs de code s’appellent également des blocs anonymes.
Ils commenceront simplement par un ‘BEGIN’ ou un ‘DECLARE’.
Ils sont composés de 1 à 3 sections :
| Type de section | obligatoire ? | Mots clés |
| section déclarative | non | DECLARE… |
| section exécutable | oui | BEGIN …END; |
| section de traitement des exceptions | non | EXCEPTION |
la section ‘exception’ quand elle est présente est incluse dans la section et NON PAS à la suite de celle ci.
le plus petit bloc PL/SQL au monde:
SQL> BEGIN
NULL;
END;
.
/
Procedure PL/SQL terminee avec succes.
le bloc ne peut pas être vide et doit contenir au moins une instruction…le ‘.’ sous SQL*PLus sert a arrêter la saisie du code PL/SQL et le ‘/’ comme toujours à exécuter le contenu du buffer de commande courant.
avec une déclaration de variable un (tout petit) bloc PL/SQL ca donne ça :
SQL> DECLARE x INTEGER;
BEGIN
X := 1;
END;
.
Procedure PL/SQL terminee avec succes.
un bloc avec des exceptions a donc la structure suivante :
DECLARE — mes déclarations de variables…
BEGIN — début de la section executable
— mes ordres SQL et PLSQL
EXCEPTION
— mon traitement des exceptions
END; — la fin du bloc executable




