Olá. só vai gravar mesmo na pasta que está compartilhada no servidor do banco. o Argumento que vc usou 'arquivo_saida', tem que ser uma variável ou o nome do arquivo que vai ser gerado lá no servidor. exemplo 'arquivo.txt'
> Bom dia. > > Tenho uma dúvida com relação a função "UTL_File.Fopen": o arquivo de saida > somente será gravado em uma pasta configurada no servidor Oracle, ou posso > salvar em uma pasta local (em meu desktop p.ex.)? (estou utilizando o > Oracle SQL Developer - 3.2.20.09). > > Quando executo a rotina que criei (é a primeira vez que crio este tipo de > rotina) somente é exibida a mensagem: > ------------------------- > Relatório de erro: > ORA-06550: linha 24, coluna 19: > PLS-00306: número incorreto de tipos de argumentos na chamada para 'FOPEN' > ORA-06550: linha 24, coluna 2: > PL/SQL: Statement ignored > 06550. 00000 - "line %s, column %s:\n%s" > *Cause: Usually a PL/SQL compilation error. > *Action: > ------------------------- > > Segue o script criado: > ------------------------- > DECLARE > arquivo_saida UTL_File.File_Type; > Dir_Arq VARCHAR2(60); > > Cursor Cur_Linha is > select pc.filial||';'|| > pc.numpedc||';'|| > pc.status||';'|| > pc.fornecedor||';'|| > fr.nome||';'|| > pc.dt_emissao||';'|| > pc.dt_pedido||';'|| > pc.val_total_pedido||';'|| > pc.cod_usuario as linha > from pedido_compra pc, fornec fr > where fr.codigo = pc.fornecedor > and dt_emissao between to_date('01/01/2013','dd/mm/yyyy') and > to_date('08/08/2013','dd/mm/yyyy') > and cod_usuario = 'ELOAS' > order by dt_emissao; > > BEGIN > Dir_Arq := 'C:\temp\'; > > arquivo_saida := UTL_File.Fopen(Dir_Arq, arquivo_saida, 'W', 256); > > For Reg_Linha in Cur_linha Loop > UTL_File.Put_Line(arquivo_saida, Reg_linha.linha); > 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; > ------------------------- > > Desde já agradeço a colaboração. > > > Att, > > -- > Otavio S Wollny > > > [As partes desta mensagem que não continham texto foram removidas] > > [As partes desta mensagem que não continham texto foram removidas]