Como obter o nome das colunas de um REFCURSOR – Exemplo prático ARTIGO EXCLUSIVO  

Obter o nome das colunas de uma variável SYS_REFCURSOR

Olá Sergio !

Eu vi o seu post no blog mostrando em como se pega as colunas de um SELECT através do pacote DBMS_SQL. Como eu poderia fazer isso recebendo um REFCURSOR ? Fiz várias tentativas e não tive sucesso.

Obrigado de antemão

Daniel R.P. Soares


Daniel,

   como combinado, eu prometi que iria responder isso com um pequeno exemplo prático através do meu blog. Então vamos lá !

Abaixo um exemplo de como você poderá fazer isso:

   DECLARE
      vCount      NUMBER  DEFAULT 0;
      cCursor     INTEGER DEFAULT DBMS_SQL.OPEN_CURSOR;
      vDescr      DBMS_SQL.DESC_TAB;
      vRefCursor  SYS_REFCURSOR; 

   BEGIN
      -- Guardar o resultado em uma variável REFCURSOR

      OPEN vRefCursor
      FOR
      SELECT * FROM ALL_TABLES;

      -- Abrir o Cursor

      cCursor := DBMS_SQL.TO_CURSOR_NUMBER(vRefCursor);

      -- Retornar as colunas em um Array

      DBMS_SQL.DESCRIBE_COLUMNS
         (
          cCursor
         ,vCount
         ,vDescr
         );  

      -- Ler o Array e exibir os campos

      FOR i IN 1..vCount LOOP
         DBMS_OUTPUT.PUT_LINE
            (
             'COLUMN: '|| vDescr(i).col_name
            );

      END LOOP;

      -- Feche sempre o seu cursor ! 🙂

      DBMS_SQL.CLOSE_CURSOR
         (
          cCursor
         );

   END;

Observe que utilizo o DBMS_SQL.TO_CURSOR_NUMBER para buscar o ID do cursor. Com essa informação em mãos, consigo buscar o resto das informações.

Espero ter ajudado !

Abraço

O que você achou disso?

Clique nas estrelas

Média da classificação / 5. Número de votos:

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Lamentamos que este post não tenha sido útil para você!

Vamos melhorar este post!

Diga-nos, como podemos melhorar este post?

2 comentários em “Como obter o nome das colunas de um REFCURSOR – Exemplo prático<span class="badge-status" style="background:#0d0d0d"> ARTIGO EXCLUSIVO </span> ”

Deixe um comentário

plugins premium WordPress