Dimanche 8 mai 2011 7 08 /05 /Mai /2011 20:37

 

Oracle PL/SQL Attributs Cursor %NOTFOUND %ROWCOUNT %ISOPEN.

Les attributs d'un cursor sont des variables gérées lors de l'éxécution d'un ordre. Ils peuvent être testés afin de mofidier le déroulement de bloc PL/SQL.

Attibuts d'un CURSOR :

%NOTFOUND = Il prend la valeur VRAI si la dernière commande FETCH n'a pas ramené de ligne.
%FOUND = Il prend la valeur VRAI si la dernière commande FETCH a ramenè une ligne.
%ROWCOUNT = Contient le nombre de lignes ramenées par la commande FETCH.
%ISOPEN = Est utilisé pour déterminé si un curseur est ouvert ou fermé.

Structure BLOC PL/SQL avec ATTRIBUTS CURSOR.

 
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;
    IF c_emp%ISOPEN =TRUE  THEN
        dbms_output.put_line('Curseur is OPEN');
    END IF;
    
    LOOP
        FETCH c_emp INTO v_emp.ename, v_emp.job;
        IF c_emp%NOTFOUND THEN
            IF c_emp%ROWCOUNT = 0 THEN
                dbms_output.put_line('Job = SALESMAN INNEXISTANT');
            ELSE 
                dbms_output.put_line('Fin De Boucle, Nbr Enreg = ' || c_emp%ROWCOUNT);
            END IF;
            EXIT;
        ELSIF c_emp%FOUND THEN
            dbms_output.put_line('Name = '||v_emp.ename || '   Job = ' || v_emp.job);
        END IF;     
    END LOOP;
    CLOSE c_emp;
    IF c_emp%ISOPEN = FALSE THEN
        dbms_output.put_line('Curseur is CLOSE');
    END IF;
END;

 

Exécution PL/SQL avec ATTRIBUTS CURSOR 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      IF c_emp%ISOPEN =TRUE  THEN
 10          dbms_output.put_line('Curseur is OPEN');
 11      END IF;
 12
 13      LOOP
 14          FETCH c_emp INTO v_emp.ename, v_emp.job;
 15          IF c_emp%NOTFOUND THEN
 16              IF c_emp%ROWCOUNT = 0 THEN
 17                  dbms_output.put_line('Job = SALESMAN INNEXISTANT');
 18              ELSE
 19                  dbms_output.put_line('Fin De Boucle, Nbr Enreg = ' || c_emp%ROWCOUNT);
 20              END IF;
 21              EXIT;
 22          ELSIF c_emp%FOUND THEN
 23              dbms_output.put_line('Name = '||v_emp.ename || '   Job = ' || v_emp.job);
 24          END IF;
 25      END LOOP;
 26      CLOSE c_emp;
 27      IF c_emp%ISOPEN = FALSE THEN
 28          dbms_output.put_line('Curseur is CLOSE');
 29      END IF;
 30  END;
 31  /
Curseur is OPEN
Name = ALLEN   Job = SALESMAN
Name = WARD   Job = SALESMAN
Name = MARTIN   Job = SALESMAN
Name = TURNER   Job = SALESMAN
Fin De Boucle, Nbr Enreg = 4
Curseur is CLOSE

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
• Oracle PL-SQL Open Fetch Close Cursor
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