Arquivo da categoria: gerando arquivo no oracle

SQL Dinâmico gerando arquivo

Fala PessoAll,

Bom, no último tópico postado Oracle Execute Immediate SQL Dinâmico eu falei um pouco sobre como montar e executar query’s dinâmicamente. Ficou bem interessante, mas… o exemplo que postei era para um único registro, e não é sempre que temos este tipo de caso. Algumas vezes temos que executar consultas que retornam mais de um registro, precisamos inserir isso numa tabela, gravar em um log, gerar um arquivo, e outra série de possibilidades.

Se vocês observarem os comentários do tópico anterior, vão ver que tem um comentário de um Anônino perguntando se não tenho um exemplo de SQL Dinâmico e que gere um arquivo. Resposta: Não tenho. Mas isso não quer dizer que não podemos fazer um.

Vamos ao nosso exemplo.


declare
type tpNome is REF CURSOR;
cNome tpNome;

–Variáveis para armazenar query e retorno.
v_sql varchar2(1000);
v_nome varchar2(100);

–Variáveis para geração do arquivo
v_arq utl_file.file_type;
begin
–Define a query
v_sql := ‘Select nome from pessoas where rownum < 50’;

–Abre o arquivo
v_arq := utl_file.fopen(‘DIRECTORY’, ‘FILE_NAME’, ‘W’);

open cNome for v_sql;
loop
fetch cNome into v_nome;
exit when cNome%notfound;

utl_file.put_line(v_arq, v_nome);
end loop;

–Fecha o arquivo
utl_file.fclose;
end;

No exemplo acima, estamos lendo os 50 primeiros registros de uma tabela chamada pessoas e gerando um arquivo com o nome destas pessoas. Bastante simples.

O exemplo acima abre uma série de portas, este é o famoso “fio da meada” e a partir deste exemplo uma série de coisas podem ser feitas.

Querido amigo Anônimo, espero que isso te ajude, na próxima vez deixa teu email que fica mais fácil de responder pra você.

Grande abraço a todos.

Atc.
Gerson Júnior
(gerson.vasconcelos@gmail.com)