PL/SQL, pour Procedural Language SQL, est le langage de manipulation de base de donnée spécifique à ORACLE. Il permet d’exploiter des bases de données sur ce langage déclaratif qu’est SQL.
SQL est un langage déclaratif : il décrit ce qui doit être fait et c’est le SGBD qui va calculer des plans d’exécution. Ainsi, il est impossible de faire preuve d’intelligence ou d’automatiser des résultat en fonction d’un type de retour.
Il n’est pas exemple pas possible d’executer une requete SQL en fonction du retour d’une précédente requpete SQL. C’est ce que va permettre l’extension PL.
Présentation
PL est une extension/surcouche de SQL permettant d’implémenter des mecanismes de programmation afin d’automatiser des traitement. Par exemple, il va être possible d’utiliser des structures propres à la programmation impérative : boucle, conditions etc.).
L’intérêt va être notamment d’écrire :
- Des fonctions
- Des procédures stockées
- des triggers
- Commande de création d’utilisateur et de configuration
PL/SQL est utilisé pour des SGBD (tel que SQL Developper) mais aussi pour différents logiciels de l’environnement oracle (tel que Form et Reports).
Bloc Anonymes
PL/SQL fonctionne via la création de bloc anonyme. Leur structure basique est la suivante :
- Declare : définit les variable à utiliser
- Begin : définit le code exécuté
- Exception : permet de gérer les exception
- End : indique la fin du bloc.
Variable
Les variables sont soumis à différentes contraintes : elles sont au plus 30 caractères, commencent par une lettre, contiennent lettre chiffre et quelques caractères spéciaux (_$#) et sont insensible à la casse.
NomVariable type := valeur ;
Declare age INTEGER; v_nom VARCHAR2(30); dateNaissance DATE; ok BOOLEAN:= true;
L’affectation est aussi possible lors d’une requête SELECT via le mot clé INTO.
SELECT champs1, champs2 INTO NomVariable1, NomVariable2
Aussi, il est possible de définir un type en fonction d’un champs, ou d’une ligne (créant ainsi une variable contenant tout une ligne) :
NomVariable table.champs%TYPE;
NomVariableLigne table%ROWTYPE;
Les structures conditionnelles
Les conditions en PL/SQL s’écrivent ainsi
IF NomVariable > NomVariable THEN
NomVariable2 := Valeur;
ELSE –ou ELSIF
NomVariable3 := Valeur;
END IF;
L’instruction CASE renvoit quant à elle une valeur
NomVariable := CASE NomVariableDeCas
WHEN ‘Montelimar’ THEN ‘Drome’
WHEN ‘Molleges’ THEN ‘Bouche-du-Rhône’
ELSE ‘Un département Français’
END;
Les boucles
Loop, bien que peu utilisé, s’écrit ainsi.
LOOP
NomVariable := 1+NomVariable ;
EXIT WHEN NomVariable > 10;
END LOOP;
Sources :
https://docs.oracle.com/cd/E11882_01/index.htm
http://en.wikibooks.org/wiki/Oracle_Programming/SQL_Cheatsheet
http://deptinfo.unice.fr/~grin/messupports/plsql.pdf