Académique Documents
Professionnel Documents
Culture Documents
avecSQLetPL/SQL
Les premiers chapitres constituent un apprentissage progressif per- d'accs aux donnes Microsoft ou
mettant au lecteur d'acqurir de solides comptences et de gagner en Oracle, il est dj auteur de nom-
autonomie sur la mise en uvre d'une base de donnes Oracle et la breux ouvrages sur ce sujet, re-
programmation laide du langage PL/SQL. Les exercices proposs connus pour leurs qualits
techniques et pdagogiques.
vous permettront de vous entraner sur SQL DLL, le langage de dfi-
nition de donnes (crer des tables, des vues, ajouter des colonnes, Aprs des tudes scientifiques
Exercices et corrigs
des colonnes calcules, des colonnes invisibles, rcuprer des tables Anne-Sophie LACROIX a travaill
aprs leur suppression, mettre en place des contraintes dintgrit, en SSII pendant quelques annes
et notamment sous Oracle. Elle est
crer des index), sur SQL DML, le langage de manipulation des don- aujourdhui formatrice et donne r-
nes sur les lments avancs du SQL (ajouter des enregistrements, gulirement les cours SQL, PL/SQL
crire des requtes simples, des requtes complexes avec tous les et Administration de Bases de don-
types de jointures, des calculs lmentaires, des calculs dagrgat, nes, un public dinformaticiens
des sous-requtes) et sur PL/SQL (crire des blocs, utiliser des cur- dbutants. Sa connaissance appro-
fondie des besoins de l'entreprise
seurs, grer les exceptions, travailler avec les transactions, crer des et ses qualits pdagogiques ren-
procdures, des fonctions et des dclencheurs...). Le dernier chapitre dent cet ouvrage particulirement
propose un TP rcapitulatif. adapt l'apprentissage et la mise
Les auteurs, au travers des questions de pr-requis et des exercices en pratique de la programmation
dune base de donnes.
90 QCM
proposs se sont efforcs de mettre en avant les piges viter lors
de l'criture de scripts.
Tlchargement
www.editions-eni.fr
93 travaux pratiques et leurs corrigs
Des lments complmentaires sont en tlchargement sur le site
www.editions-eni.fr.
ISSN 1765-7334
Prs de 28 H de mise en pratique
ISBN : 978-2-7460-8930-3
Plus
dinformations:
Les chapitres du livre
Avant-propos LeTlchargement
langage de dfinition de donnes
9 782746 089303
Jrme GABILLAUD
www.editions-eni.fr
SQL DML SQL avanc PL/SQL Blocs et curseurs
27 H
PL/SQL Procdures et fonction Dclencheurs de
bases de donnes TP gnral Annexes Anne-Sophie LACROIX
Sur www.editions-eni.fr :
b Les scripts de correction
de tous les exercices proposs.
Avant-propos
Objectif de ce livre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Comment utiliser ce livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Conventions d'criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
noncs
Chapitre 1 : Le langage de dfinition de donnes
Pr-requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
nonc 1.1 Cration de tables : le dictionnaire de donnes . . . . . . . . . . . . . . . . . . . . 15
nonc 1.2 Mise en place des tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
nonc 1.3 Cration d'une squence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
nonc 1.4 Ajout de contraintes d'intgrit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
nonc 1.5 Modification de table : ajout d'une colonne . . . . . . . . . . . . . . . . . . . . . . . 19
nonc 1.6 Suppression d'une colonne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
nonc 1.7 Cration d'un index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
nonc 1.8 Modification d'une contrainte d'intgrit . . . . . . . . . . . . . . . . . . . . . . . . . 20
nonc 1.9 Attribution d'une valeur par dfaut une colonne. . . . . . . . . . . . . . . . . . . 20
nonc 1.10 Dfinition d'un synonyme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
nonc 1.11 Modification du nom d'une table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2
Chapitre 5 : PL/SQL Procdures et fonctions
Pr-requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
nonc 5.1 Calcul de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
nonc 5.2 Fonction de comparaison de donnes de type date . . . . . . . . . . . . . . . . . 70
nonc 5.3 Procdure pour automatiser un traitement . . . . . . . . . . . . . . . . . . . . . . . 71
nonc 5.4 Procdure de suppression conditionnelle. . . . . . . . . . . . . . . . . . . . . . . . . 71
nonc 5.5 Fonction pour extraire une ligne d'information . . . . . . . . . . . . . . . . . . . . . 72
nonc 5.6 Fonction pour encapsuler un calcul d'agrgat . . . . . . . . . . . . . . . . . . . . . 73
nonc 5.7 Fonction munie de plusieurs paramtres. . . . . . . . . . . . . . . . . . . . . . . . . 73
nonc 5.8 Planification d'une procdure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
nonc 5.9 Squence utilise depuis une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . 75
nonc 5.10 Message d'erreur personnalis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
nonc 5.11 Procdure d'insertion multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
nonc 5.12 Comportement diffrent en fonction du contexte . . . . . . . . . . . . . . . . . . . 77
nonc 5.13 Cration d'un package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
nonc 5.14 Fonction renvoyant plusieurs valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Chapitre 7 : TP gnral
nonc 7.1 Construction des tables . ....... ....... ....... ........ . . . . . . 95
nonc 7.2 Modification de structure ....... ....... ....... ........ . . . . . . 96
nonc 7.3 Ajout des informations . . ....... ....... ....... ........ . . . . . . 97
nonc 7.4 Extraction simple . . . . . . ....... ....... ....... ........ . . . . . . 97
3
nonc 7.5 Calculs simples. . . . . . . . . . . . . . . . . . . ........ ....... ....... . 97
nonc 7.6 Calculs d'agrgat. . . . . . . . . . . . . . . . . . ........ ....... ....... . 97
nonc 7.7 Cration de vues . . . . . . . . . . . . . . . . . . ........ ....... ....... . 98
nonc 7.8 Procdure . . . . . . . . . . . . . . . . . . . . . . ........ ....... ....... . 98
nonc 7.9 Fonctions . . . . . . . . . . . . . . . . . . . . . . . ........ ....... ....... . 99
nonc 7.10 Dclencheurs de base de donnes. . . . . . ........ ....... ....... . 99
Corrigs
Chapitre 1 : Le langage de dfinition de donnes
Pr-requis ................................................... 101
Corrig 1.1 Cration de tables : le dictionnaire de donnes . . . . . . . . . . . . . . . . . . . 104
Corrig 1.2 Mise en place des tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Corrig 1.3 Cration d'une squence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Corrig 1.4 Ajout de contraintes d'intgrit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Corrig 1.5 Modification de table : ajout d'une colonne . . . . . . . . . . . . . . . . . . . . . 108
Corrig 1.6 Suppression d'une colonne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Corrig 1.7 Cration d'un index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Corrig 1.8 Modification d'une contrainte d'intgrit . . . . . . . . . . . . . . . . . . . . . . . . 109
Corrig 1.9 Attribution d'une valeur par dfaut une colonne . . . . . . . . . . . . . . . . . 110
Corrig 1.10 Dfinition d'un synonyme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Corrig 1.11 Modification du nom d'une table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5
Chapitre 5 : PL/SQL Procdures et fonctions
Pr-requis ................................................... 151
Corrig 5.1 Calcul de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Corrig 5.2 Fonction de comparaison de donnes de type date . . . . . . . . . . . . . . . . 152
Corrig 5.3 Procdure pour automatiser un traitement . . . . . . . . . . . . . . . . . . . . . . 153
Corrig 5.4 Procdure de suppression conditionnelle . . . . . . . . . . . . . . . . . . . . . . . 153
Corrig 5.5 Fonction pour extraire une ligne d'information. . . . . . . . . . . . . . . . . . . . 154
Corrig 5.6 Fonction pour encapsuler un calcul d'agrgat . . . . . . . . . . . . . . . . . . . . 155
Corrig 5.7 Fonction munie de plusieurs paramtres . . . . . . . . . . . . . . . . . . . . . . . 156
Corrig 5.8 Planification d'une procdure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Corrig 5.9 Squence utilise depuis une fonction . . . . . . . . . . . . . . . . . . . . . . . . . 158
Corrig 5.10 Message d'erreur personnalis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Corrig 5.11 Procdure d'insertion multiple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Corrig 5.12 Comportement diffrent en fonction du contexte . . . . . . . . . . . . . . . . . . 160
Corrig 5.13 Cration d'un package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Corrig 5.14 Fonction renvoyant plusieurs valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . 166
6
Chapitre 7 : TP gnral
Corrig 7.1 Construction des tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Corrig 7.2 Modification de structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Corrig 7.3 Ajout des informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Corrig 7.4 Extraction simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Corrig 7.5 Calculs simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Corrig 7.6 Calculs d'agrgat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Corrig 7.7 Cration de vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Corrig 7.8 Procdure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Corrig 7.9 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Corrig 7.10 Dclencheurs de base de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Annexes
Annexe 1 : Structure de la base aprs le chapitre 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Annexe 2 : Travailler avec Oracle
Connatre le rpertoire d'installation d'Oracle . . . . . . . . . . . . . . . . . . . . . . . . 203
Modifier le fichier de configuration tnsnames.ora . . . . . . . . . . . . . . . . . . . . . 203
Annexe 3 : Travailler avec une transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7
PL/SQL Blocs et curseurs
nonc Chapitre 4
Chapitre 4
PL/SQL Blocs et curseurs
O r a cl e 1 2 c
Dure : 3 heures 55
Mots cls
DECLARE, BEGIN, END, LOOP, FOR, WHILE, IF, CASE, CURSOR, FORALL, EXCEPTION,
SUBTYPE, DBMS_OUTPUT
Objectif
Ce chapitre est consacr la mise en pratique des premiers concepts du langage PL/SQL, c'est-
-dire bien comprendre la structure de bloc PL/SQL, le fonctionnement des curseurs, la
dclaration de variable, les tableaux et les exceptions.
Une mise en pratique du package DBMS_OUTPUT est galement prsente. Ce package est
particulirement utile pour suivre la progression des traitements dans un bloc PL/SQL.
Pr-requis
Pour valider les pr-requis ncessaires, avant d'aborder le TP, rpondez aux questions ci-
dessous :
1. Quels sont les quatre mots cls utiliss pour structurer un bloc PL/SQL ?
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
2. Quelles instructions sont possibles dans un bloc PL/SQL ?
a. SELECT
b. INSERT, UPDATE, DELETE
c. COMMIT, ROLLBACK
d. CREATE, ALTER, DROP
55
Oracle 12c - Programmez avec SQL et PL/SQL
Les TP Informatiques
3. Quel est l'avantage de passer par un bloc PL/SQL plutt que de choisir la solution pure-
ment SQL lors de l'excution de plusieurs instructions du DML (INSERT, UPDATE et
DELETE) ?
a. L'excution est plus rapide.
b. C'est la mme chose.
c. Les exceptions peuvent tre traites.
d. Il n'y a alors pas besoin de grer les transactions.
4. Quelles dclarations de variables ne sont pas valides ?
a. c varchar2(10);
b. 12 int;
c. entier number(2);
d. tableau entier;
5. Quelle dclaration permet de dfinir une variable structure comme la table des clients ?
a. Client clients%type;
b. Client clients%rowtype;
c. Client clients;
6. La dclaration suivante est-elle possible ? Justifiez votre rponse.
phrase varchar2(5000)
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
7. Comment est-il possible de dfinir notre type entier comme tant un number(10) ?
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
8. Comment est-il possible de dfinir une variable structure compose des champs numero
number(10) et nom varchar(40) ?
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
56
PL/SQL Blocs et curseurs
nonc Chapitre 4
57
Oracle 12c - Programmez avec SQL et PL/SQL
Les TP Informatiques
15. Comment est-il possible de reprendre le droulement classique du bloc aprs qu'une
exception a t leve et traite ?
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Corrig p. 137
Pour la ralisation de ce premier script, nous considrons que tous les exemplaires sont achets
l'tat neuf et que l'ensemble des emprunts de tous les exemplaires sont conservs en ligne.
Exemple de l'tat des exemplaires avant l'excution du bloc PL/SQL :
58
PL/SQL Blocs et curseurs
nonc Chapitre 4
la suite de l'excution du bloc, la mme requte permet d'obtenir le rsultat suivant :
Corrig p. 139
59
Oracle 12c - Programmez avec SQL et PL/SQL
Les TP Informatiques
Aprs l'excution du bloc PL/SQL, la mme requte ne doit ramener aucune ligne.
Pour les besoins de l'exercice, ajoutez un membre non actif depuis plus de 2 ans par l'interm-
diaire de l'instruction suivante :
INSERT INTO membres (numero, nom, prenom, adresse, adhesion, duree)
VALUES (seq_membre.NEXTVAL, 'LOMOBO', 'Laurent', '31 rue des
lilas',sysdate-1000,1);
Indice
Apportez les modifications de structure ncessaires avant de raliser le script.
Corrig p.141
Pour ce type de calcul, l'exemplaire d'un ouvrage est considr comme emprunt par l'un des
membres partir du moment o il est inscrit sur la fiche. C'est donc la date figurant dans la
table des emprunts qui fait rfrence pour l'ensemble des calculs.
60