Vous êtes sur la page 1sur 2

Université de Sousse Année Universitaire 2021-2022

TD : PL/SQL et Curseur


Année d'étude : A2 Filière : LIG

Exercice 1 :
EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO#)

DEPT (DEPTNO, DNAME, LOC)

1) Écrire un programme PL/SQL qui place dans 3 variables v_DNAME, v_LOC et


v_nombre, le nom, la localisation et le nombre d’employés qui y travaille du département
numéro 2 et affiche : «  le département 2 s'appelle …. Est localisé à ….. et contient …
employés»
2) Ecrire un programme PL/SQL qui affiche le nom et la fonction de l’employé ayant le
salaire max.

3) Est-ce que le programme va fonctionner s’il y a plusieurs employés ayant un salaire max ?

4) Créer une nouvelle table vide EMP_FR de même structure que EMP. On pourra, par
soucis de rapidité, recopier la table EMP dans EMP_FR pour en obtenir la structure, puis
effacer tous les tuples de EMP_FR.
5) Écrire un programme PL/SQL permettant de recopier tous les tuples de la table EMP
dans la table en augmentant au passage leur salaire de 15 % les opérations nécessaires sur
le salaire et la commission.
6) Ecrire un programme PL/SQL permettant d’afficher les noms des 100 premiers employés
de la table EMP (utiliser %ROWCOUNT). Le nombre n pourra être stocké dans une
variable lors de sa déclaration. N = 1000.
7) Écrire un programme une procédure qui place dans 3 variables v_DNAME, v_LOC et
v_nombre, le nom, la localisation et le nombre d’employés qui travaille dans un
département dont le numéro passé en paramètre de la procédure et affiche : «  le
département 2 s'appelle …. Est localisé à ….. et contient … employés»
Exercice 2
On désire pouvoir consulter à tout instant les effectifs des différents blocs de TD en Licence
d’Informatique. Il s’agit de définir un programme PL/SQL permettant l’insertion automatique
de tuples dans une relation (table) EFFECTIF_PAR_BLOC. Cette information est
implicitement contenue dans la relation ETUDIANT.

EDUDIANT (numero_etudiant, nom_etudiant, numero_bloc)


EFFECTIF_PAR_ BLOC (numero_bloc, effectif_bloc)

1) On vous demande de définir un bloc PL/SQL intégrant les requêtes SQL nécessaires et
permettant d’insérer dans la relation EFFECTIF_PAR_BLOC les tuples constitués du numéro
de bloc et de son effectif calculé. Dans le bloc PL/SQL vous devez :

a. Déclarer un curseur explicite dont la requête fournie le nombre d’étudiants par BLOC.
Pour cela vous devez faire un groupement par BLOC et utiliser la fonction COUNT ( )
pour compter le nombre d’étudiants par BLOC.
b. Ouvrir et parcourir le curseur ligne par ligne par l’intermédiaire d’une boucle.
c. Insérer chaque ligne du curseur dans la table EFFECTIF_PAR_BLOC.
2) Appliquer les modifications nécessaires pour faire le parcours du curseur en utilisant les
deux type de boucles for (for ..in) et (for…loop).
3) Appliquer les modifications nécessaires pour traiter le cas où la table etudiant est vide
comme une exception.
4) écrire une fonction qui prend en paramètre le numéro d’un bloc et retourne le nombre
d’effectif de ce dernier. Il faut traiter le cas où le bloc n’existe pas comme une exception.
5) Donner l’instruction qui permet d’exécuter cette fonction
6) écrire une procédure qui prend en paramètre un nombre d’effectif par bloc et affiche les
numéros de bloc ayant cet effectif. Traiter tous les cas d’exceptions.

Vous aimerez peut-être aussi