Cours 2: PL/SQL
Cours 2: PL/SQL
Cours 2: PL/SQL
Procedural Language/SQL
Blocs, variables, instructions, structures de
contrôle, curseurs, gestion des erreurs,
procédures/fonctions stockées, packages,
triggers
PL/SQL
Chapitre 3 de la norme SQL3 sous le
nom SQL/PSM (Persistent Stored
Modules)
Langage procédural plus portable
Un script SQL Developeur peut contenir
des blocs de sous-programmes en
PL/SQL
Traitement de transactions
2019-2020 Bases de données 2
PL/SQL (2)
Construction de procédures ou
fonctions stockées qui améliorent le
mode client-serveur par stockage des
procédures ou fonctions souvent
utilisées au niveau serveur
Gestion des erreurs (à la ADA)
Construction de triggers (ou
déclencheurs)
2019-2020 Bases de données 3
Structure d’un bloc
Un programme ou une procédure
PL/SQL est un ensemble de un ou
plusieurs blocs. Chaque bloc comporte
trois sections :
1. Section déclaration
2. Section corps du bloc
3. Section traitement des erreurs
2019-2020 Bases de données 4
1. Section déclaration
Section facultative
Facultative
Variables scalaires
Types composés
• Enregistrement (record)
• Table
nom-variable nom-table.nom-attribut%TYPE;
• Exemple :
film exemplaire.numFilm%TYPE;
Opérateur d’affectation :=
Structure alternative
Structure répétitives
WHILE condition
LOOP
instructions;
END LOOP;
OPEN C1;
Attribut Valeur
%FOUND Vrai si exécution correcte de l’ordre SQL
%NOTFOUND Vrai si exécution incorrecte de l’ordre SQL
%ISOPEN Vrai si curseur ouvert
%ROWCOUNT Nombre de lignes traitées par l’ordre SQL,
évolue à chaque ligne traitée par un
FETCH (zéro au départ)
Possibilité d’écrire :
Bases de données 71
Informations à propos des
procédures/fonctions
Erreurs
• USER_ERRORS
• ALL_ERRORS
• DBA_ERRORS
Infos sur les procédures/fonctions :
• USER_OBJECTS
• ALL_OBJECTS
• DBA_OBJECTS
Infos sur les textes source :
• USER_SOURCE
• ALL_SOURCE
• DBA_SOURCE
2019-2020 Bases de données 72
Supression d’une
procédure/fonction stockée
nom-procédure (liste-paramètres-effectifs);
nom-variable := nom-fonction(liste-paramètres-
effectifs);
EXECUTE DBMS_OUTPUT.PUT_LINE(nom-
fonction (liste-paramètres-effectifs));
2019-2020 Bases de données 75
Exemple
1. Création procédure
CREATE OR REPLACE PROCEDURE
nvFilm(num film.numFilm%TYPE,
titre film.titre%TYPE)
IS
BEGIN
INSERT INTO film (numFilm, titre)
VALUES (num, titre);
END nvFilm;
2019-2020 Bases de données 76
Exemple
2. Exécution procédure
EXECUTE DBMS_OUTPUT.PUT_LINE (
nbEx('The Irishman'));
EXECUTE DBMS_OUTPUT.PUT_LINE (
nbEx(&nom));
EXECUTE DBMS_OUTPUT.PUT_LINE (
nbEx(&nom));
VARIABLE nb NUMBER
EXECUTE :nb := nbEx('The Irishman');
PRINT nb
EXECUTE DBMS_OUTPUT.PUT_LINE
(gestionV.leReal (′The Departed′));
USER_TRIGGERS
ALL_TRIGGERS
DBA_TRIGGERS