Pular para o conteúdo

PL/SQL – Lendo um cursor usando Dynamic SQL

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 é 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

Sergio Willians

Sergio Willians

Sergio Willians é o fundador do GPO (Grupo de Profissionais Oracle) e possui quase 30 anos de experiência em tecnologias Oracle, sendo especialista em desenvolvimento Forms/Reports, PL/SQL e EBS (E-Business Suite) nos módulos Receivables, Payables e General Ledger. Atualmente trabalha na Scania Latin America, onde se dedica à área de integração de dados com Confluent Kafka. Sua paixão é compartilhar conhecimento com a comunidade Oracle, contribuindo para o crescimento e a excelência da plataforma.

Deixe um comentário

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

plugins premium WordPress