TP2 PL/SQL Les curseurs
Soit la table emp qui stocke des informations sur les employés dune entreprise.
Créer la table emp sur le compte HR à l’aide de la requête SQL
DROP TABLE emp;
CREATE TABLE emp
( matr NUMBER(10) NOT NULL,
nom VARCHAR2(50) NOT NULL,
sal number(7,2),
adresse VARCHAR2(96),
dep NUMBER(10) NOT NULL,
CONSTRAINT emp_pk PRIMARY KEY (matr)
);
INSERT INTO EMP VALUES (0,'Turing, Alan', 2446.13, 'Manchester, GB', 1);
INSERT INTO EMP VALUES (1,'Dijkstra, Edsger', 1779.88, 'Rotterdam, NL', 1);
INSERT INTO EMP VALUES (2,'Mac Lane, Saunders', 3141.16, 'Chicago, US', 2);
INSERT INTO EMP VALUES (3,'John, Saunders', 2145.16, 'NewYork, US', 2);
INSERT INTO EMP VALUES (4,'Mac Lane, Saunders', 3141.16, 'Chicago, US', 10);
Exercice 1 (les curseurs implicites)
Ecrire un bloc PL/SQL anonyme permettant d’afficher le nombre des employés supprimés du
département 10 en utilisant SQL%ROWCOUNT
Exercice 2 (les curseurs explicites : boucle LOOP pour les curseurs)
a- Type associé à un curseur avec %TYPE
Ecrire un bloc PL/SQL anonyme permettant d’afficher les salaires et la somme des salaires de tous les
employés
Indications
- Déclarer un curseur c_sal contenant tout les salaires de la table emp
- Une variable v_sal de meme type que sal de la table emp
- Une variable v_total de meme type que sal pour calculer la somme des salaires
- Afficher le résultat de la façon suivante :
** salaire : 2446,13$
** salaire : 1779,88$
** salaire : 3141,16$
** salaire : 2145,16$
total : 9512,33$
1
b- Type associé à un curseur avec %ROWTYPE
Ecrire un bloc PL/SQL anonyme permettant d’afficher les noms des employés, leurs salaires et la
somme des salaires
Indications
- Déclarer un curseur c_emp contenant tout les salaires de la table emp
- Une variable v_emp de meme type que c_emp
- Une variable v_total de meme type que sal pour calculer la somme des salaires
- Afficher le résultat de la façon suivante :
nom : Turing, Alan ** salaire : 2446,13$
nom : Dijkstra, Edsger ** salaire : 1779,88$
nom : Mac Lane, Saunders ** salaire : 3141,16$
nom : John, Saunders ** salaire : 2145,16$
total : 9512,33$
Exercice 3 (les curseurs explicites : boucle LOOP pour les curseurs)
Modifier le bloc PL/SQL de l’exercice 2 pour afficher les noms des employés du département 1, leurs
salaires et la somme des salaires de ce département
Indications
- Déclarer un curseur c_sal contenant les salaires des employés du dep=1
- Une variable v_sal de meme type que sal
- Une variable v_total de meme type que sal pour calculer la somme des salaires
- Afficher le résultat de la façon suivante :
nom : Turing, Alan ** salaire : 2446,13$
nom : Dijkstra, Edsger ** salaire : 1779,88$
total : 4226,01$
Exercice 4 (les curseurs explicites : boucle FOR pour les curseurs)
Ecrire un bloc PL/SQL anonyme permettant d’afficher les noms des employés et leurs adresses
- Afficher le résultat de la façon suivante :
Employe : TURING, ALAN** Ville : Manchester, GB
Employe : DIJKSTRA, EDSGER** Ville : Rotterdam, NL
Employe : MAC LANE, SAUNDERS** Ville : Chicago, US
Employe : JOHN, SAUNDERS** Ville : NewYork, US
Exercice 5 (les curseurs paramétrés)
Ecrire un bloc PL/SQL anonyme permettant d’afficher les noms des employés regroupés de chaque
département
- Afficher le résultat de la façon suivante :
Dep 1 : Turing, Alan
Dep 1 : Dijkstra, Edsger
Dep 2 : Mac Lane, Saunders
Dep 2 : John, Saunders