UTL_FILE - Ajuda

31/05/2017

0

Ola.. Por favor, preciso de uma ajuda.. Estou tentando gerar um arquivo .txt a partir de uma Query do Oracle utilizando o UTL.File .. Aparentemente, de acordo com alguns fóruns que procurei, esta tudo certo, mas mesmo assim não me gera o arquivo. Aparece a mensagem "Diretório invalido". Alguém poderia me ajudar?


DECLARE
arquivo_saida
UTL_File.File_Type; 

Cursor Cur_Linha is 
  SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0 AND DWCDSTAT = 0; 

BEGIN 
arquivo_saida := UTL_File.Fopen('C:/Teste/','teste_exp.txt', 'w');   
For Reg_Linha in Cur_linha 
  Loop
    UTL_File.Put_Line(arquivo_saida, Reg_linha.DWCDCLIE);
  End Loop; 
UTL_File.Fclose(arquivo_saida);   
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(arquivo_saida);

WHEN UTL_FILE.WRITE_ERROR THEN
Dbms_Output.Put_Line('Erro de gravação no arquivo.');
UTL_File.Fclose(arquivo_saida);

WHEN UTL_FILE.INVALID_PATH THEN
Dbms_Output.Put_Line('Diretório inválido.');
UTL_File.Fclose(arquivo_saida);

WHEN UTL_FILE.INVALID_MODE THEN
Dbms_Output.Put_Line('Modo de acesso inválido.');
UTL_File.Fclose(arquivo_saida); 

WHEN Others THEN
Dbms_Output.Put_Line('Problemas na geração do arquivo.');
UTL_File.Fclose(arquivo_saida);

END;

Felipe

Felipe

Responder

Post mais votado

31/05/2017

Boa tarde Felipe,

Se bem me lembro, precisa existir o registros do diretório no banco
select * from dba_directories;

Ou os parâmetros do Oracle

select * from V$PARAMETER
where NAME = 'utl_file_dir';


Não testei a sua rotina.

Roberto Spernega

Roberto Spernega
Responder

Mais Posts

31/05/2017

Daniel Araújo

Boa tarde Felipe!

O diretório existe? Se existe o usuário system tem permissão de escrita no diretório? Acho que esse artigo pode te ajudar:
http://www.oraclehome.com.br/2012/02/13/como-ler-e-gravar-arquivos-textos-pelo-oracle-10g-ou-superior/

http://www.oraclehome.com.br/2012/02/13/como-ler-e-gravar-arquivos-textos-pelo-oracle-10g-ou-superior/

Se a resposta for útil não esquece de dar um like!
Responder

31/05/2017

Felipe

Era esse artigo que estava seguindo mesmo. E realmente tinha esquecido de dar permissão para meu usuário gravar o arquivo, porem agora ele não esta gerando erro, porem também não esta gravando o arquivo. Apresenta apenas a mensagem "Procedimento PL/SQL concluído com sucesso." e não aparece nada la na pasta.
Responder

01/06/2017

Roberto Spernega

Bom dia,

Tem um artigo muito bom , deve te ajudar.

https://www.devmedia.com.br/pacote-utl-file-do-oracle/13129
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar