
Support de cours Base de données - Le PL/SQL 1
Le PL/SQL
Généralité .............................................................................................................................................................................................................................. 1
La notion de bloc PL/SQL (anonyme ou non) ................................................................................................................................................................... 1
Les types ................................................................................................................................................................................................................................ 1
Les variables et leur affectation ..................................................................................................................................................................................... 2
Les constantes ..................................................................................................................................................................................................................... 2
Les structures de contrôle ............................................................................................................................................................................................... 2
Les procédures et les fonctions ....................................................................................................................................................................................... 3
Les packages ......................................................................................................................................................................................................................... 5
La restitution de l’information ......................................................................................................................................................................................... 6
La récupération des valeurs d’un requête récupérant un seul enregistrement ..................................................................................................... 7
Les curseurs ......................................................................................................................................................................................................................... 7
Les triggers basés .............................................................................................................................................................................................................. 9
Les exceptions ..................................................................................................................................................................................................................... 9
L’auto indendation de la clé primaire .............................................................................................................................................................................. 11
L’utilisation d’une fonction PL/SQL dans une requête SQL ...................................................................................................................................... 11
Le SQL dynamique .............................................................................................................................................................................................................. 11
Généralité
Le PL/SQL est un langage procédural, compilé, intégré au noyau Oracle. Il est intégré à la base de données (procédure ou fonction
stockées dans la base) et le code est exécuté sur le serveur. Comme le langage Ada, les procédures et les fonctions peuvent être
dans des packages constituant un ensemble logique (par exemple, le pakage codage va contenir toutes les fonctionnalités des
codages).
Ce langage est non case sensitive, l’indentation est libre et les commentaires sont placés entre /* …. */ ou -– commentaire sur 1 ligne.
Il est possible d’y intégrer les instructions de manipulation de données dans le code PL/SQL. Cependant, il est possible de
contourner le problème en utilisant le SQL dynamique.
La notion du curseur permet de lire enregistrement par enregistrement le résultat d’une requête.
Ce langage étant très riche, nous ne verrons que les principaux aspects de celui-ci.
La notion de bloc PL/SQL (anonyme ou non)
DECLARE
… (optionnel)
BEGIN
…
EXCEPTION
… (optionnel)
END;
/ pour l’activer et me compiler
Afficher les erreurs de compilation SHOW ERRORS ou SHO ERR en SQL*Plus
Voici, le plus petit bloc PL/SQL anonyme : BEGIN NULL; END;
Les types
Ils sont identiques aux types d’Oracle
plus (liste non exhaustive):
- BOOLEAN (opérateur AND OR NOT)
- le type d’un champ (prend en compte les éventuelles modifications de type du champ d’où réduction du coût de maintenance)
ex : DEBIT CREDIT%TYPE; OU DEBIT USER.CREDIT%TYPE;
- le record
ex : TYPE MEETINGTYP IS RECORD (DAY DATE, NAME VARCHAR2(20), PURPOSE VARCHAR2(80));