Samedi 7 mai 2011 6 07 /05 /Mai /2011 21:50

 

Oracle PL/SQL OPEN-FETCH-CLOSE CURSEUR.

Les curseurs Explicites sont utilisés pour gérer les requetes SELECT qui doivent rapporter plusieurs lignes.
Un curseur est une zone de mémoire utilisé par le noyau Oracle (analyse et interprétation SQL).
Les curseurs sont définis dans le section DECLARE d'un bloc PL/SQL.

Gestion de curseurs Explicites avec ces commandes :

OPEN = Ouvre le curseur.
FETCH = Exécute la requête et ramène ligne à ligne (avec utilisation de LOOP).
CLOSE = Ferme le curseur.

Structure BLOC PL/SQL avec un CURSEUR.

 
SET SERVEROUTPUT ON;
DECLARE
    v_emp  scott.emp%rowtype;
    CURSOR c_emp IS
    SELECT ename, job
      FROM scott.emp
     WHERE job = 'SALESMAN';
BEGIN
    OPEN c_emp;
    LOOP
        FETCH c_emp INTO v_emp.ename, v_emp.job;
        EXIT WHEN c_emp%NOTFOUND;
        dbms_output.put_line('Name = '||v_emp.ename || '   Job = ' || v_emp.job); 
    END LOOP;
    CLOSE c_emp;
END; /

Dans la partie DECLARE, nous declarons le CURSEUR et la variable v_emp qui fait référence à un enregistrement (ligne) de table de la base. Ici toutes les colonnes de la table EMP du schéma SCOTT. L'attribut %ROWTYPE spécifie la structure d'une ligne de table.

 

Exécution PL/SQL avec un CURSEUR dans SQLPlus.

 
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
  2      v_emp  scott.emp%rowtype;
  3      CURSOR c_emp IS
  4      SELECT ename, job
  5        FROM scott.emp
  6       WHERE job = 'SALESMAN';
  7  BEGIN
  8      OPEN c_emp;
  9      LOOP
 10          FETCH c_emp INTO v_emp.ename, v_emp.job;
 11          EXIT WHEN c_emp%NOTFOUND;
 12          dbms_output.put_line('Name = '||v_emp.ename || '   Job = ' || v_emp.job);
 13      END LOOP;
 14      CLOSE c_emp;
 15  END;
 16  /
Name = ALLEN   Job = SALESMAN
Name = WARD    Job = SALESMAN
Name = MARTIN   Job = SALESMAN
Name = TURNER   Job = SALESMAN

PL/SQL procedure successfully completed.

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Oracle PL-SQL Structure d'un BLOC
• Oracle PL-SQL SELECT INTO
• Oracle PL-SQL Variables %TYPE %ROWTYPE
Par Daniel Roesch - Publié dans : ORACLE PLSQL
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Rechercher Articles Oracle SQL sur ce Site.

Loading

À lire aussi…

Download PDF Oracle

Rechercher sur le site

Oracle 10G - DBA -

Syndication

  • Flux RSS des articles
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés