Académique Documents
Professionnel Documents
Culture Documents
Chap3 - Curseur
Chap3 - Curseur
UNITÉ D’ENSEIGNEMENT
PROGRAMMATION OBJET
AVANCÉE
NOTES DE COURS
PLSQL
MOUFIDAJGUIRIM@YAHOO.COM
A.U. 2019-2020
CHAPITRE III:
Les curseurs
2
OBJECTIFS DU CHAPITRE
explicite.
3
NOTION DE CURSEUR(1)
Implicites Explicites
4
NOTION DE CURSEUR(2)
5
NOTION DE CURSEUR(3)
Fermer le curseur. 6
NOTION DE CURSEUR(4)
7
CURSEURS IMPLICITES(1)
EXEMPLE1:
DECLARE
V_Lnom Laboratoire.Lnom%type;
V_Facno Laboratoire.Facno%type;
BEGIN Bloc anonyme avec
curseur implicite
SELECT Lnom, Facno qui cherche le nom,
INTO V_Lnom, V_Facno la faculté de
rattachement du
FROM Laboratoire laboratoire n°10
WHERE Labno=10;
…. 10
END;
CURSEUR IMPLICITE: SELECT .. INTO (4)
EXEMPLE2:
DECLARE
V_Nb NUMBER;
BEGIN
SELECT count(*) Bloc anonyme
avec curseur
INTO V_Nb implicite qui
FROM Chercheur compte le nombre
de chercheurs du
WHERE Labno=10; laboratoire n°10
….
END; 11
CURSEUR IMPLICITE: SELECT .. INTO (5)
1- DÉCLARATION DU CURSEUR
Consiste à nommer une requête et à lui associer
éventuellement des paramètres formels.
SYNTAXE:
1- DÉCLARATION DU CURSEUR
EXEMPLES:
2- OUVERTURE DU CURSEUR
SYNTAXE:
OPEN nom_curseur [ (paramètre_effectif,…)];
EXEMPLES:
2- OUVERTURE DU CURSEUR
Pointeur de
ligne
Ensembles de lignes
actif
22
CURSEURS EXPLICITES(7)
4-FERMETURE DU CURSEUR
SYNTAXE:
CLOSE nom-curseur;
CURSEUR ET ENREGISTREMENT
SYNTAXE:
Nom_enregistrement nom_curseur%ROWTYPE;
EXEMPLE:
DECLARE LOOP
CURSOR C1 IS FETCH C1 INTO Rect1;
SELECT Cnom, Sal+NVL(prime,0) salai EXIT WHEN C1%NOTFOUND OR
FROM Chercheur C1%ROWCOUNT > 5;
WHERE Labno=10; V_Cnom := Rec1.Cnom;
Rec1 C1%ROWTYPE; V_Salaire := Rec1.salaire;
V_Cnom Chercheur.Cnom%type; END LOOP;
V_Salaire Chercheur.Sal%type; CLOSE C1;
27
BEGIN END;
OPEN C1;
CURSEURS EXPLICITES(12)
28
L’utilisation de cette clause exige que le curseur ait été
défini avec la clause FOR UPDATE (verrouillage).
CURSEURS EXPLICITES(13)
Lecture (FETCH)
Fermeture (CLOSE)
30
Deux variantes de syntaxe selon le type du curseur:
nommé ou anonyme.
CURSEURS EXPLICITES(15)