Vous êtes sur la page 1sur 2

LES CURSEURS

ORACLE utilise des structures dynamiques qui sont en fait des espaces de travail
(réservés à SQL) où sont exécutées les instructions SQL et où sont stockés les données et les
résultats nécessaires. Les curseurs PL/SQL permettent de nommer ces espaces afin d’accéder
aux informations qu’ils contiennent.

Ces curseurs sont de 2 types :


 Curseur implicite : créé automatiquement pour chaque instruction de manipulation des
données (INSERT, UPDATE, DELETE et SELECT) y compris celles ne renvoyant
qu’une seule ligne.

IF SQL%NOTFOUND THEN DBMS_OUTPUT.PUT_LINE (‘aucune ligne’);

 Curseur explicite : déclaré explicitement par le programmeur pour les instructions


renvoyant plusieurs lignes afin de traiter les lignes individuellement.

Ensemble actif: c’est l’ensemble des lignes renvoyées par une instruction.
Curseur
1842 KARIM directeur
2623 FAHD gestionnaire
5600 FAIZA secrétaire
Les étapes de la vie d’un curseur :
- Déclaration du curseur.
- Ouverture du curseur.
- Traitement des lignes.
- Fermeture du curseur.

non

ouverture traitement oui fermeture


déclaration du des vide ? du
curseur lignes curseur

Contrôle des curseurs explicites :


1. Ouvrir le curseur 2. Extraire 1 ligne à 3. Fermer le curseur
L’aide du curseur

Pointeur de curseur Point Point

 Déclaration :
CURSOR nom_curseur IS instruction SELECT……. ;

1
- Instruction SELECT sans clause INTO.

Exemple:
DECLARE
…………….
CURSOR curseur_emp IS
SELECT empno, ename FROM emp
WHERE job = ’gestionnaire’;

 Ouverture du curseur : dans la section exécutable.


OPEN nom-curseur ;

L’instruction OPEN :
- Exécute l’interrogation associée au curseur.
- Identifie l’ensemble actif (ensemble des résultats).
- Positionne le pointeur avant la première ligne.

 Si l’interrogation ne renvoie aucune ligne, lorsque le curseur est ouvert, PL/SQL ne


déclenche pas d’exceptions.

 Traitement des lignes :


FETCH nom-curseur INTO [var1, var2, ….] / nom-enreg;

L’instruction FETCH permet de récupérer les lignes de l’ensemble actif (une à la fois) dans
des variables PL/SQL pour un éventuel traitement, puis elle avance le pointeur vers la ligne
suivante.

LOOP
FETCH le-curseur INTO num_emp, nom_emp ;
EXIT WHEN condition ;
-- traiter les données extraites de l’ensemble actif
…………….
END LOOP ;

Remarque :
- pour récupérer toutes les lignes, insérer l’instruction FETCH dans une boucle.

 Fermeture du curseur ;
CLOSE nom-curseur ;

Attributs d’un curseur explicite :


Ce sont des informations qui nous renseignent sur l’état du curseur.

Attribut Type Description


%ROWCOUNT nombre Indique le nombre de lignes traitées.
%NOTFOUND booléen Prend la valeur TRUE si aucune ligne n’est lue.
%FOUND ″ Prend la valeur TRUE si une ligne est extraite.
%ISOPEN ″ Prend la valeur TRUE si le curseur est ouvert.

Vous aimerez peut-être aussi