Nội dung text fiche module sgbd 3a.pdf
AU : 2019-2020 1 Modules : SGBD - BD&SGBD Auditoire : 3ème Année A20/21-B8 Aide-mémoire PL/SQL Avant-propos : Ce petit résumé contient quelques éléments clés relatifs à la partie PL/SQL. Il ne contient pas tous les éléments vus durant cette partie et n’est donc pas un substitut au cours. Organisation de l’aide-mémoire : ▪ Partie 1 : Blocs anonymes ▪ Partie 2 : Les curseurs explicites ▪ Partie 3 : Les fonctions et les procédures stockées ▪ Partie 4 : Les triggers ou les déclencheurs ▪ Partie 5 : Les exceptions
AU : 2019-2020 2 Partie 1 : Blocs anonymes ▪ Objectif(s) / Rôle : - Permet d’écrire des programmes PL/SQL - Est la base de tout programme PL/SQL (les fonctions, procédures et triggers s’écrivent sous la forme d’un bloc anonyme modifié) - N’est pas enregistré au niveau du serveur - Est compilé à chaque exécution - Ne peut pas être appelé dans un autre programme ou dans une requête SQL - Peut contenir d’autres blocs anonymes imbriqués ▪ Structures : 1. Structure simple (un seul bloc) : DECLARE -- Partie optionnelle : permet de déclarer des variables BEGIN -- Partie obligatoire : permet d’écrire des instructions EXCEPTION -- Partie optionnelle : permet de gérer les exceptions END ; / 2. Structure moins simple (blocs imbriqués) : Exemple avec 2 blocs imbriqués DECLARE -- Partie optionnelle : permet de déclarer des variables BEGIN DECLARE -- Partie optionnelle : permet de déclarer les variables du bloc imbriqué BEGIN -- Partie obligatoire : permet d’écrire des instructions EXCEPTION -- Partie optionnelle : permet de gérer les exceptions du bloc imbriqué END ; EXCEPTION -- Partie optionnelle : permet de gérer les exceptions END ; /
AU : 2019-2020 3 ▪ Quelques éléments importants : ➢ Quelques types de variables : BOOLEAN Valeurs possibles TRUE, FALSE, NULL et NOT NULL CONSTANT et NOT NULL Doivent avoir une valeur par défaut lors de la déclaration %TYPE La nouvelle variable aura le même type qu’une autre variable ou une colonne d’une table RECORD TYPE Record_name IS RECORD (element_1 type, element_2 type, element_3 type, ...); New_record Record_name; %ROWTYPE La nouvelle variable sera un record dont les éléments auront le même nom, le même ordre et le même type que les colonnes d’une table ou des les colonnes sélectionnées par la requête SELECT d’un curseur ➢ Structures de contrôle : IF et CASE IF .. THEN .. END IF IF .. THEN .. ELSE .. END IF IF .. THEN .. ELSEIF .. THEN .. ELSE .. END IF IF condition THEN -- Instructions END IF; IF condition THEN -- Instructions ELSE -- Instructions END IF; IF condition1 THEN -- Instructions ELSIF condition2 THEN -- Instructions ELSE -- Instructions END IF; CASE format1 CASE format2 CASE Expression WHEN valeur1 THEN -- Instructions1; WHEN valeur2 THEN -- Instructions2; . . . ELSE -- InstructionsN; END CASE; CASE WHEN expr1 THEN -- Instructions1; WHEN expr2 THEN -- Instructions2; . . . ELSE -- InstructionsN; END CASE; → Utilise l’égalité pour comparer l’expression aux différentes valeurs → Utilisé lorsque les conditions portent sur plusieurs expressions et/ou comparaisons ➢ Structures répétitives : WHILE LOOP FOR WHILE condition LOOP -- Instructions; END LOOP; LOOP -- Instructions; EXIT WHEN condition; -- Instructions; END LOOP; FOR compteur IN REVERSE inf..sup /* REVERSE permet au compteur de commencer par sup en décrémentant */ LOOP -- Instructions; END LOOP;