UNIVERSITÉ CHOUAIB DOUKKALI Année universitaire : 2024-2025
FACULTÉ POLYDISCIPLINAIRE-SIDI BENNOUR
DEPARTEMENT INFORMATIQUE
Oracle DBA-TP2PL/SQL
Part I: Curseurs paramétrés
Exercice 1
L’intérêt de ces exercices étant de vous familiariser avec les curseurs paramètres, vous ferez
en sorte de ne pas contourner leur usage. Nous utiliserons les données suivantes :
1- CLIENT(numCli, nomCl i ) , p r e n omCl i ) , a d r e s s e , t e l )
PERSONNEL ( numpers , nompers , prenompers , manager, s a l a i r e)
TYPECCL ( numtypeccl, nomtypeccl )
COMPTECLIENT ( #num c l i, numccl, d a t e c c l l ,# numpers,# numtypeccl)
TYPEOPERATION ( numtypeoper, nomtypeoper )
OPERATION ( #num c l i, #numccl, #numoper, numtypeoper, d a t e o p e r , montantoper ,
libeloper )
2- Ajouter les contraintes nécessaires :clés primaires et étrangères
3- Ecrire une procédure qui affiche tous les clients, et pour chaque client, la liste des
comptes.
Exercice 2
1- Ecrire une procédure qui affiche tous les clients, et pour chaque client, la liste des
comptes, et pour chacun de ces comptes, l’historique des opérations.
Part II: Triggers
Exercice1
Créer un utilisateur, puis connectez-vous par le compte crée.
1- Créer la table client(NumClient,nom,prénom,ville), et remplir la table de 6
enregistrements.
2- Créer un curseur, permettant de récupérer le nom et la ville de 5 clients(table client).
3- Augmenter le nombre des clients récupérés par le curseur à 10 lignes, qu’est ce que
vous remarquez ?
4- Faites les modifications nécessaires pour régler le problème.
5- Utiliser la boucle loop uniquement en ajoutant une condition d’arrêt.
UNIVERSITÉ CHOUAIB DOUKKALI Année universitaire : 2024-2025
FACULTÉ POLYDISCIPLINAIRE-SIDI BENNOUR
DEPARTEMENT INFORMATIQUE
6- Créer table pilote(numpl,nom,ville) et la table
vols(numvol,numAv,numpl,vdepart,varrive,hdepart,harrive)
7- Ajouter le champ Nbrevol à la table Pilote initialisé à 0 puis afficher ses lignes.
8- Créer le déclencheur INSERT_VOL pour la mise à jour automatique de nombre de
vols.
9- Insérer un vol puis afficher les lignes de la table pilote.
10- Créer un déclencheur ayant comme contrainte : Un pilote ne doit pas effectuer 2 vols
par jour.
Exercice 2
A-Base de Données
1-Créer les tables suivantes :
Etudiant(numEtu, nom, prenom, date_naiss, civilite, moyenne)
Module(codeMod,nomMod,effecMax, effectif)
Examen(#codeMod, codeExam,dateExam)
Inscription(#numEtu,#codeMod,date_Insc)
Prerequis(#codeMod,codeModPrereq, noteMin)
Resultat(#codeMod,#codeExam,#numEtu,note)
B- Triggers
1- Implémentez les contraintes suivantes (données de la base de données ci-dessus) :
1. Il ne doit pas être possible de modifier la note min dans la table prerequis.
2. Dans un module, il ne doit pas y avoir plus de effecMax des élèves inscrits. Pour cela on
procède comme suit :
a- créer deux procédures , une pour incrémenter l’effectif et l’autre pour décrémenter
l’effectif( les deux procédures prennent en paramètre le code du module)
b- Créer un trigger, permettant de mettre à zero l’effectif avant l’insertion d’un
nouveau module.
c- Créer un trigger, permettant d’incrémenter le code du module après l’insertion
d’une ligne dans la table inscription.
d- c- Créer un trigger, permettant de décrémenter le code du module après la
suppression d’une ligne dans la table inscription.
e- Créer une vue ModAvailable, permettant de récupérer les codes des modules de la
table module dont l’effectif est inférieur à l’effectif maximal.
f- Créer un trigger permettant d’afficher l’erreur ‘No place available’ si le nombre de
lignes de la table ModAvailable est égal à 0, le trigger est déclenché avant l’insertion ou la
mise à jour de la table inscription.
3. On ne peut créer un examen pour un module que s'il y a des élèves inscrits dans ce module.
Pour cela on procède comme suit :
a- Créer une vue examenPossible, permettant de récupérer les codes des modules si le
nombre des modules de la table inscription est supérieur à zéro.
b- Créer un trigger permettant d’afficher l’erreur ‘module unavailable’ si le nombre de
lignes de la table examenPossible est égal à 0, le trigger est déclenché avant l’insertion ou la
mise à jour de la table examen.
UNIVERSITÉ CHOUAIB DOUKKALI Année universitaire : 2024-2025
FACULTÉ POLYDISCIPLINAIRE-SIDI BENNOUR
DEPARTEMENT INFORMATIQUE
4. Un élève ne peut passer un examen que si sa date d'inscription est antérieure à la date de
l'examen. On peut procéder comme suit :
a- Créer une vue ExamEtudiants, permettant de récupérer les étudiants dont la date
d’inscription est strictement inférieure à la date d’examen.
b- Donner un trigger, permettant d’afficher l’erreur ‘examen antérieur à l’inscription dans le
module’ si la vue ExamEtudiants ne contient pas d’enregistrement. Le trigger est déclenché
avant l’insertion ou la mise à jour de la table resultat.