acho que oque você quer fazer é isso não é ?
antes você tem que setar o parametro utl_file_dir = /tmp ?
esse parametro esta em 'init<sid>.ora'
- funciona assim , primeiro você vai criar um procedimento com um cursor que vai gerar o resultado que você precisa.
-depois você chama esse procedimento passando o retorno dele como paramentro pra essa procedure abaixo !
- Código: Selecionar todos
create or replace procedure sp_grave_arquivotxt
(pdiretorio in varchar2,
pnome_arquivo in varchar2,
ptexto in varchar2)
is
vOutput_file utl_file.file_type;
begin
-- Se já existir abre , senão cria !
vOutput_file := utl_file.fopen (pdiretorio,pnome_arquivo, 'W');
-- Grava linhas no arquivo.
Utl_File.put_line(vOutput_file, ptexto );
-- fecha
Utl_File.fclose(vOutput_file);
Dbms_Output.Put_Line('Arquivo gerado com sucesso.');
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
Dbms_Output.Put_Line('Operação inválida no arquivo.');
UTL_File.Fclose(vOutput_file);
WHEN UTL_FILE.WRITE_ERROR THEN
Dbms_Output.Put_Line('Erro de gravação no arquivo.');
UTL_File.Fclose(vOutput_file);
WHEN UTL_FILE.INVALID_PATH THEN
Dbms_Output.Put_Line('Diretório inválido.');
UTL_File.Fclose(vOutput_file);
WHEN UTL_FILE.INVALID_MODE THEN
Dbms_Output.Put_Line('Modo de acesso inválido.');
UTL_File.Fclose(vOutput_file);
WHEN Others THEN
Dbms_Output.Put_Line('Problemas na geração do arquivo.');
UTL_File.Fclose(vOutput_file);
END;