GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

PL/SQL – Lendo um cursor usando Dynamic SQL

Olá pessoal !

Atendendo a pedidos, abaixo um pequeno exemplo de como ler um cursor usando Dynamic SQL. O código é bem simples:

CREATE TABLE teste
   (
    codigo    NUMBER
   ,descricao VARCHAR2(2000)
   )
/   

INSERT INTO teste VALUES (1, 'TESTE 1')
/ 

INSERT INTO teste VALUES (2, 'TESTE 2')
/


DECLARE
   stmtString     VARCHAR2(2000);
   TYPE SQLType   IS REF CURSOR;
   testCursor     SQLType;
   recTeste       teste%ROWTYPE; 

BEGIN
  -- String com o SQL
  stmtString := 'SELECT * FROM teste WHERE codigo = :codigo';

  -- Abrir o cursor usando o bind
  OPEN testCursor FOR stmtString USING 1;

  -- Fetch dos dados do cursor
  LOOP
    FETCH testCursor INTO recTeste;
  EXIT WHEN testCursor%NOTFOUND;
     DBMS_OUTPUT.PUT_LINE('Descricao: ' || recTeste.descricao);

  END LOOP;

  -- Fechando cursor
  CLOSE testCursor;
 
EXCEPTION
   WHEN OTHERS THEN
      -- Feche sempre seu cursor :)
      IF testCursor%ISOPEN 
      THEN
         DBMS_OUTPUT.PUT_LINE('Cursor Aberto !');

      ELSE   
        DBMS_OUTPUT.PUT_LINE('Cursor Fechado !'); 

     END IF;

END;

/

Creio que deva estar auto-explicativo ! 🙂

Você pode utilizar outras abordagens para ter o mesmo efeito. Use sua imaginação e crie outras variações.
Um grande abraço

Share

You may also like...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *