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.
Indication: 
  • 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 Empl1 as select empno, ename, sal, deptno from Emp where 1=2;
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
              Alter Table Empl1 Add  NBsub nulmber (3);
  • 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