Vous êtes sur la page 1sur 2

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

Vous aimerez peut-être aussi