Obter nome das colunas de um Cursor
Olá pessoal !
Acho que todos que trabalham com PL/SQL em algum momento, precisou exibir o nome das colunas de um cursor. Para aqueles que estão iniciando, aqui vai um exemplo de como fazer isso.
Utilizaremos a PACKAGE DBMS_SQL para nos fornecer essa informação:
DECLARE
--
-- Variáveis
--
vCount NUMBER DEFAULT 0;
cCursor INTEGER DEFAULT DBMS_SQL.OPEN_CURSOR;
vDescr DBMS_SQL.DESC_TAB;
BEGIN
--
-- Parse da Instrução SQL
--
DBMS_SQL.PARSE
(
cCursor
,'SELECT * FROM all_tables'
,DBMS_SQL.NATIVE
);
--
-- Devolve as colunas em um array
--
DBMS_SQL.DESCRIBE_COLUMNS
(
cCursor
,vCount
,vDescr
);
--
-- Varre o array e exibe a descrição das colunas
--
FOR i IN 1..vCount LOOP
DBMS_OUTPUT.PUT_LINE
(
'COLUNA: '|| vDescr(i).col_name
);
END LOOP;
--
-- Sempre feche o seu cursor 🙂
--
DBMS_SQL.CLOSE_CURSOR
(
cCursor
);
END;
Você também pode capturar outros atributos além do nome da coluna. Isso eu deixo para vocês pesquisarem através do link para a documentação da PACKAGE DBMS_SQL.
Abraço