0% ont trouvé ce document utile (0 vote)
25 vues3 pages

Manipulation des curseurs en PL/SQL

Le document présente les curseurs en PL/SQL, qui se divisent en curseurs implicites, gérés par Oracle, et curseurs explicites, déclarés par l'utilisateur pour traiter des résultats de requêtes. Les étapes de manipulation des curseurs explicites incluent la déclaration, l'ouverture, le traitement des lignes et la fermeture. Il aborde également les attributs des curseurs et l'utilisation de curseurs paramétrés pour des requêtes avec des valeurs de paramètres différentes.

Transféré par

anasriahmed19
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues3 pages

Manipulation des curseurs en PL/SQL

Le document présente les curseurs en PL/SQL, qui se divisent en curseurs implicites, gérés par Oracle, et curseurs explicites, déclarés par l'utilisateur pour traiter des résultats de requêtes. Les étapes de manipulation des curseurs explicites incluent la déclaration, l'ouverture, le traitement des lignes et la fermeture. Il aborde également les attributs des curseurs et l'utilisation de curseurs paramétrés pour des requêtes avec des valeurs de paramètres différentes.

Transféré par

anasriahmed19
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Les curseurs en PL/SQL

Il existe deux types de curseurs :


 Curseurs implicite : c’est un curseur SQL généré et géré par le noyau d’Oracle
pour chaque ordre SQL d’un bloc. Toutes les requêtes SQL sont associées à un
curseur : Un curseur est un pointeur vers un résultat d’une requête. Le curseur
implicite n’est pas déclaré par l’utilisateur.
 Curseur explicite : c’est un curseur SQL généré et géré par l’utilisateur pour
traiter un ordre SELECT qui ramène plus d’une ligne.
 Curseur explicite : 4 étapes
1. Déclaration du curseur
2. Ouverture du curseur
3. Traitement des lignes
4. Fermeture du curseur

I) Manipulation des curseurs explicite


1. Déclaration du curseur :
Se fait dans la partie DECLARE.
Syntaxe :
DECLARE
CURSOR Nom_Cursseur IS SELECT Attribut1,…….,Attributn
FROM TAble WHERE condition;

BEGIN
….
END;
2. Ouverture du curseur :
L’ouverture du curseur lance l’exécution de l’ordre
SELECT associé au curseur. L’ouverture se fait dans la section BEGIN du
bloc.
Syntaxe :
OPEN nom_curseur
Exemple :
DECLARE
CURSOR cur_emp IS SELECT empno, ename, sal FROM EMP WHERE deptno = 10;
BEGIN
OPEN cur_emp;
….
END;

1
3. Traitement de lignes du curseur :
Après l’exécution du SELECT, les lignes ramenées sont traitées une par une, la valeur
de chaque colonne du SELECT doit être stockée dans une variable réceptrice.
Syntaxe:
FETCH Nom_cursseur INTO liste_variables;
Exemple:
DECLARE
CURSOR cur_emp IS SELECT empno,ename, sal FROM EMP WHERE
deptno = 10;
v_empno EMP.emp%type;
v_ename EMP.ename%type;
v_sal EMP.sal%type;
BEGIN
OPEN cur_emp;
LOOP
FETCH cur_emp INTO v_empno, v_ename, v_sal;
DBMS_OUTPUT.PUT_LINE (‘No Emp : ‘||v_empno);
DBMS_OUTPUT.PUT_LINE (‘Nom Emp : ‘||v_ename);
DBMS_OUTPUT.PUT_LINE (‘Sal Emp : ‘||v_sal);
END LOOP;
CLOSE cur_emp; /*partie 4*/
END;

Syntaxe FOR/IN:
Declare
CURSOR c_moncurseur IS SELECT attribut1, attribut2, ... FROM
relations;
BEGIN
FOR c_montuple IN c_moncurseur LOOP
instructions
END LOOP;
END;
Exemple
CURSOR cIntervenants IS SELECT pknom, prenom FROM tIntervenant;
BEGIN
DBMS_OUTPUT.PUT_LINE('** Liste des intervenants **');
FOR i IN cIntervenants LOOP
DBMS_OUTPUT.PUT_LINE('-' || INITCAP(TRIM(i.prenom)) || ' ' ||
INITCAP(TRIM(i.pknom)));
END LOOP;
END;

2
4. Fermeture du curseur :
Il est important de fermer le curseur une fois qu’on en a plus besoin, cela permet de
libérer la mémoire occupée par ce dernier.
Syntaxe :
CLOSE nom_curseur; /* voir l’exemple précédent*/

II) Attributs des curseurs


Tous les curseurs ont des attributs que l’utilisateur peut utiliser :
%ROWCOUNT : Nombre de lignes traitées par le curseur.
%FOUND : Vrai si au moins une ligne a été traitée par la requête ou le dernier fetch.
%NOTFOUND : Vrai si aucune ligne n’a été traitée par la requête ou le dernier fetch.
%ISOPEN : Vrai si le curseur est ouvert (utile seulement pour les curseurs explicites)

III) Curseurs paramétrés


Un curseur paramétré peut servir plusieurs fois avec des valeurs des paramètres
différentes. On doit fermer le curseur entre chaque utilisation de paramètres différents
si on n’utilise pas la boucle FOR dédiée.
Exemple
DECLARE
CURSOR c ( p_dep EMP. dep%TYPE) IS SELECT dep , nom FROM emp
WHERE dep = p_dep ;
BEGIN
FOR v_employe IN c ( 1 )
LOOP
DBMS_output .put_Line ( ’ Dep␣1␣ : ␣ ’ | | v_employe . nom ) ;
END LOOP;
FOR v_employe IN c ( 2 )
LOOP
DBMS_output . put_Line ( ’ Dep␣2␣ : ␣ ’ | | v_employe . nom ) ;
END LOOP;
END;

Vous aimerez peut-être aussi