Gerar arquivo txt com linha no tamanho 5000

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
brunomruiz
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Seg, 26 Out 2009 3:04 pm
Localização: Bebedouro - SP

Bom dia pessoal.
Estou com uma dúvida e dificuldade para solucionar este problema. Ocorre que necessito criar uma arquivo txt de exportação, cujo tamanho final de linha vai ser cerca de 5187 caracteres. Via spool da erro, uma query normal também da erro, tentei utilizar o UTL_FILE e não consegui também. Vou anexar uma declaração feita no pl/sql, se souberem ou puderam ajudar ficarei muito grato.
Abs

Selecionar tudo

DECLARE
  v_dir VARCHAR2(20) := 'CADASTROS';
  v_file UTL_FILE.FILE_TYPE;
  v_arq VARCHAR2(20) := 'TESTE.TXT';
  v_string VARCHAR2(6000);
BEGIN
  v_file := UTL_FILE.FOPEN_NCHAR(v_dir, v_arq, 'w');

  -- inicio linha 1
  v_string := LPAD('X', 2000, 'X');
  v_string := v_string||LPAD('Y', 2000, 'Y');
  UTL_FILE.PUT_LINE_NCHAR(v_file, v_string);
  UTL_FILE.FFLUSH(v_file);
  -- fim linha 1

  UTL_FILE.FCLOSE(v_file);
END;
Lembrando que tenho permissão para criar arquivos no diretório. Se diminuir o tamanho da certo...
O erro que apresenta é ORA-29285: file write error

Abs
Editado pela última vez por brunomruiz em Sex, 01 Jun 2012 11:50 am, em um total de 1 vez.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Qual mensagem do erro?
brunomruiz
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Seg, 26 Out 2009 3:04 pm
Localização: Bebedouro - SP

ORA-29285: file write error
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Bruno.

Por padrão UTL_FILE.FOPEN abre o arquivo com tamanho de registro até 1024 caracteres (incluindo nova linha). O mais provável é o seu código exceder 1024.

Tente assim:

Selecionar tudo

f: = utl_file.fopen (dir, filename, 'w');
Mudar para algo como (assumindo que nenhum de seus registros excederá 10000)

Selecionar tudo

f: = utl_file.fopen (dir, filename, 'w', 10000);
Espero ter ajudado.
brunomruiz
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Seg, 26 Out 2009 3:04 pm
Localização: Bebedouro - SP

Deu certo madmax.
Muito obrigado pela sua ajuda.
Abs
Responder
  • Informação