TP: Les Curseurs
Exercice 1:
Créer un bloc PL/SQL sans curseur permettant:
- D'augmenter de 20$ les salaires des employés dont la colonne Job est 'Manager'.
- Afficher le nombre des employés modifiés.
- Utiliser l'instruction Update
- Utiliser la propriété %ROWCOUNT du curseur implicite utilisé par Oracle pour réaliser l'instruction Update.
Exercice 2:
- Créer deux tables Empl1 et Empl2 qui contiennent les colonnes empno, ename, sal et deptno de la table Emp.
SQL> create table Empl2 as select empno, ename, sal, deptno from Emp where 1=2;
Ecrire un bloc PL/SQL permettant de:
- Utiliser un curseur pour sélectionner les colonnes empno, ename, sal et deptno de tous les employés de la table Emp.
- Parcourir ce curseur afin d'insérer dans Empl1 les employés gagnant plus que 1500 $ et dans Empl2 les autres employés.
- Afficher le nombre de lignes du curseur.
Exercice 3:
- Vider la table Empl1.
- Ecrire un bloc PL/SQL permettant de:
- Lire deux réel A et B avec A ≤ B
- Utiliser un curseur pour sélectionner les colonnes empno, ename, sal et deptno des employés de la table Emp qui ont un salaire entre A et B.
- Parcourir les lignes de ce curseur afin de les insérer dans Empl1.
- Afficher le nombre des lignes du curseur.
Exercice 4:
- Ajouter dans la table Empl1 une colonne NBSub de type entier
- Ecrire un bloc PL/SQL permettant de:
- Calculer pour chaque employé le nombre X d'employés pour lesquels il est manager. Ce sont ses subordonnés pour lesquels il est manager.
- Modifier la colonne NBSub pour chaque employé avec la valeur X
- Afficher tous les employés (depuis Empl1) après modifications.
Indication:
Il y a deux façons pour calculer le nombre de subordonnés de chaque employé:
1. Parcourir, avec un curseur, la table des employés (Emp) et pour chacun:
- Prendre son code A
- Calculer, avec SELECT ...INTO, le nombre d'employés dont la colonne manager est égale à A
2. Créer un curseur avec une requête qui donne le nombre de subordonnés pour chaque employé (nom, ...) .
Remarque:
Utiliser une auto-jointure: SELECT ..... FROM EMP e1, EMP e2 WHERE.....
Modifié le: mercredi 13 décembre 2023, 10:22