Pessoal, 

o minimo e default é 1024, e o máximo é 32767 bytes... 

Abaixo um script que eleva ao máximo este detalhe, utilizado em uma table com 
997 columns.. o exemplo usa o mesmo esquema de separar as colunas com ";"....


SET SERVEROUTPUT ON SIZE 32767

DECLARE
   l_utl_dir  VARCHAR2(100) := '/usr/tmp';
   l_utl_file VARCHAR2(100) := 'teste_edu.txt';
   l_utl_id   UTL_FILE.FILE_TYPE;
   l_header   VARCHAR2(32767) := null;
BEGIN
   DBMS_OUTPUT.enable(32767);
   l_utl_id := UTL_FILE.FOPEN( location     => l_utl_dir, 
                               filename     => l_utl_file, 
                               open_mode    => 'w', 
                               max_linesize => 32767 ); /* increase the size of 
the line of 1024 to 32767 bytes */ 
   FOR c IN ( SELECT *
                FROM DBA_TAB_COLUMNS
               WHERE TABLE_NAME = 'EDWBG_ORGA_LEG_ENTITY_LCV'
               ORDER BY COLUMN_ID )
   LOOP
      l_header := l_header || c.COLUMN_NAME || ';';
   END LOOP;
   UTL_FILE.PUT_LINE( file   => l_utl_id, 
                      buffer => l_header );
   DBMS_OUTPUT.PUT_LINE( 'Bytes in line: ' || LENGTH( l_header ) );
   UTL_FILE.FCLOSE( file => l_utl_id );
EXCEPTION
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE( 'ERRO: ' || SQLERRM );
      IF UTL_FILE.IS_OPEN( file => l_utl_id ) THEN
         UTL_FILE.FCLOSE ( file => l_utl_id );
      END IF;
END;

zidvlauns <[EMAIL PROTECTED]> escreveu:                             Além de 
apontar para um diretório válido (criado com as permissões
 necessárias), o que aparentemente já foi feito pq conseguiu criar um
 arquivo menor, é necessário definir o tamanho de caracteres máximos
 por linha.
 Para ver detalhes sobre como fazer isso veja o material abaixo:
 
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_file.htm#i1003526
 
 --- Em oracle_br@yahoogrupos.com.br, "Bruno Lorenzini"
 <[EMAIL PROTECTED]> escreveu
 >
 > Sim. A partir versão 9i ou 10g (não lembro ao certo) só é possível
 apontar
 > para uma pasta usando um directory.
 > 
 >  
 > 
 > Sds,
 > 
 >  
 > 
 >   _____  
 > 
 > De: oracle_br@yahoogrupos.com.br
 [mailto:[EMAIL PROTECTED] Em
 > nome de Alexsandro Haag
 > Enviada em: segunda-feira, 26 de maio de 2008 09:12
 > Para: oracle_br@yahoogrupos.com.br
 > Assunto: [oracle_br] Re: UTL_FILE - UTL_FILE.PUT_LINE
 > 
 >  
 > 
 > Olá Wagner,
 > usei poucas vezes utl_file, mas até onde me lembro não consigo
 > apontar diretamente para um caminho qualquer. Preciso criar um
 > "directory" no Oracle que aponte para uma pasta no Servidor e dar
 > grants de leitura e escrita para o usuário que irá gravar neste
 directory.
 > 
 > Peço que me corrija(m) se estiver errado, mas creio que seja este o
 > teu problema.
 > 
 > Att.
 > Alex
 > 
 > --- Em [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br>
 > os.com.br, Wagner Franze Junior
 > <zenfra123@> escreveu
 > >
 > > 
 > > 
 > > Bom dia a todos,
 > > 
 > > Estou com problemas para gerar um arquivo .txt com o UTL_FILE.
 > Preciso gerar extrações de tabela, porém, preciso dos nomes dos campos
 > assim como os os registros separados com ; ( ponto e virgula) , mas já
 > estou encontrando problemas no momento em que insiro a primeira linha
 > no arquivo .txt, é exibido o erro que colo logo abaixo para que possam
 > ver. A tabela que estou extraindo os dados possue 256 colunas e quando
 > faço teste com tabelas possuindo menos colunas o arquivo é gerado
 > normalmente.
 > > 
 > > 
 > > Existe limite em bytes para o tamanho do texto por linha?
 > > 
 > > 
 > > Erro exibido
 > > ----------------------------------------------------------
 > > ERROR at line 1:
 > > ORA-29285: file write error
 > > ORA-06512: at "SYS.UTL_FILE", line 140
 > > ORA-06512: at "SYS.UTL_FILE", line 785
 > > ORA-06512: at line 29
 > > 
 > > 
 > > Código de teste para geração do cabeçalho:
 > > ----------------------------------------------------------
 > > 
 > > DECLARE
 > > V_ARQUIVO UTL_FILE.FILE_TYPE;
 > > V_CABECALHO VARCHAR(6000);
 > > V_CONT PLS_INTEGER;
 > > BEGIN
 > > 
 > > 
 > > V_ARQUIVO := UTL_FILE.FOPEN('/work/comum','testecol.txt','w');
 > > V_CONT := 0;
 > > 
 > > FOR REG IN (
 > > SELECT
 > > DBA_TAB_COLS.COLUMN_NAME
 > > FROM
 > > DBA_TAB_COLS
 > > WHERE
 > > DBA_TAB_COLS.TABLE_NAME = 'ESTABELECIMENTOS')
 > > LOOP
 > > 
 > > IF (V_CONT = 0 ) THEN
 > > V_CONT := 1;
 > > V_CABECALHO := REG.COLUMN_NAME ||';';
 > > ELSE
 > > V_CABECALHO := V_CABECALHO ||';'|| REG.COLUMN_NAME;
 > > END IF;
 > > 
 > > END LOOP;
 > > 
 > > UTL_FILE.PUT_LINE(V_ARQUIVO,
 > > V_CABECALHO,
 > FALSE);
 > > 
 > > UTL_FILE.FCLOSE(V_ARQUIVO);
 > > 
 > > END;
 > > /
 > > 
 > > 
 > > ___________________________________
 > > 
 > > 
 > > Wagner Franze Junior
 > > E-MAIL: zenfra123@
 > > MSN: franze_jr@
 > > Brasil - São paulo - Sp
 > > 
 > > :-)
 > > 
 > > 
 > > 
 > > Abra sua conta no Yahoo! Mail, o único sem limite de espaço
 > para armazenamento!
 > > http://br.mail. <http://br.mail.yahoo.com/> yahoo.com/
 > >
 > 
 >  
 > 
 > 
 > 
 > [As partes desta mensagem que não continham texto foram removidas]
 >
 
 
     
                                       

       
---------------------------------
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! 

[As partes desta mensagem que não continham texto foram removidas]

Responder a