Index de l'article
dictionnaire de donnees
Langage SQL
Langage PL/SQL
Les Transactions
Les curseurs

 

Les curseurs

Un curseur est un pointeur vers une zone mémoire SQL privée allouée (dans la mêmoire PGA) pour le traitement d’une instruction SQL . Le curseur permet de traiter un à un les enregistrements (lignes de tables) ramenés par l’instruction SQL en question.

Deux types de curseurs peuvent être distingués :

  1. Curseur implicite : lorsqu’un utilisateur lance une commande SQL , Oracle génère un curseur pour le traitement de cette commande. Ce curseur créé et géré par Oracle est dit curseur implicite.
  2. Curseur explicite : si vous souhaitez gérer une commande SQL au sein de votre code PL/SQL, vous pouvez créer explicitement un curseur pour traiter une à une les lignes ramenées par la commande.

Voici un exemple :

DECLARE
nom emp.ename%TYPE;
salaire emp.sal%TYPE;

CURSOR C1 IS SELECT ename, NVL(sal,0) FROM emp;

BEGIN
OPEN C1;

LOOP
FETCH C1 INTO nom, salaire;
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE ( nom||' gagne '||salaire || ' dollars');
END LOOP;

CLOSE C1;
END;

Explications :

CURSOR C1: permet de déclarer un curseur portant le nom C1
nom emp.ename%TYPE signifie que la variable nom est de même type que la colonne ename de la table emp (Un autre type prédéfini %ROWTYPE peut être utilisé pour déclarer une variable de type enregistrement de même type que l’enregistrement d'une table)
Open C1 : ouvre le curseur
Fetch : ramène l’enregistrement courant et le charge dans les variables nom et salaire et puis avance le pointeur vers l’enregistrement suivant
C1%NOTFOUND : renvoie VRAI si le curseur pointe au delà du dernier enregistrement. D’autres attributs du curseur peuvent être utilisé :

  • %FOUND,
  • %ROWCOUNT qui renvoie le nombre de lignes ramenées par l’ordre SQL du curseur,
  • %ISOPEN qui renvoie vrai si le curseur est ouvert.

Close C1 : permet de fermer le curseur et libérer les ressources.



 

Copyright © 2009-2012 tuto-dba-oracle.com - Tous Droits Réservés -