Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #86769
    leo_jf
    Participante

      Bom dia Srs,
      Será que alguém poderia me dar um help.
      Tenho uma interface que é executada diariamente no unix. Mas acontece que as vezes tem algum erro do programa que faz a chamada, e com isso a interface não é executada. Quando acontece isso tenho um arquivo .txt de, pelo menos, 19000 registros. Quando isso acontece, não consigo executar a interface para atualizar as respectivas tabelas. Dá o
      erro:

      DECLARE
      *
      ERROR at line 1:
      ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes
      ORA-06512: at "SYS.DBMS_OUTPUT", line 35
      ORA-06512: at "SYS.DBMS_OUTPUT", line 198
      ORA-06512: at "SYS.DBMS_OUTPUT", line 139
      ORA-06512: at line 103

      Alguém saberia como posso resolver esse problema, pois no script que executo já coloquei DBMS_OUTPUT.ENABLE com um valor alto; e ainda continuo com o erro.
      Realmente não sei se adianta aumentar toda hora o output

      Qq ajuda, agradeço.

      #86771
      Avatar photoLeonardo Litz
      Participante

        Olá Chara.

        Seguinte, seguindo a especificação do dbms_output:

        The maximum size is 1,000,000, the minimum is 2000.

        Não é possível fazer um put_line maior que 1.000.000.

        Valeu Leonardo Litz.

        #86772
        leo_jf
        Participante

          Fala Chara, blz?
          Poxa..que chato isso.
          Teria que alterar entao para ult_file. Alguém me dá uma dica ai?

          #86775
          Manoel872
          Participante

            Obs.
            Utl_file.Put_line também tem limite então cuidado 32k bytes por linha.

            Att,

            Manoel Jr

            #86777
            Rodrigo Almeida
            Participante

              Bom,

              Um exemplo clássico.


              SQL>
              1 declare
              2 texto UTL_FILE.FILE_TYPE;
              3 begin
              4 texto := UTL_FILE.FOPEN ('/u01/ranet','arquivos.txt','w');
              5 UTL_FILE.PUT_LINE (texto,'ALMEIDINHA!');
              6 UTL_FILE.FCLOSE (texto);
              7* end;

              Onde,

              O parâmetro do banco de dados UTL_FILE_DIR deve estar com /u01/ranet ou simplesmente *.

              E /u01/ranet/ é apenas um exemplo de caminho de um servidor.

              Abraços,
              Rodrigo Almeida

              #86780
              Avatar photoLeonardo Litz
              Participante

                Leonardo,

                como o Manoel disse existe uma limitacao de 32kb por linha na versao 8i, apartir da versao 9i foi incluido um novo parametro na procedure get_line:

                len – input buffer length, default is null, max is 32767

                logo:

                SQL>
                1 declare
                2 texto UTL_FILE.FILE_TYPE;
                3 begin
                4 texto := UTL_FILE.FOPEN (‘/u01/ranet’,’arquivos.txt’,’w’);
                5 UTL_FILE.GUT_LINE (texto,’ALMEIDINHA!’,32767);
                6 UTL_FILE.FCLOSE (texto);
                7* end;

                Vlw Leonardo Litz

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress