Re: Package UTL_FILE/ writing a line with more than 1023 char/Oracle 7.3.3

From: Reinhard Wahl <wahl_at_zv.fhg.de>
Date: Tue, 25 May 1999 16:37:17 +0200
Message-ID: <374AB59D.14654C23_at_zv.fhg.de>


Hi Bruno,

my solution is:

  • ------------------------------------- PROCEDURE put
  • ------------------------------------- ( p_filehandle IN File_Type , p_text IN VARCHAR2 ) IS v_text VARCHAR2(1023); -- wegen ORACLE-BUG v_len NUMBER; i INTEGER; BEGIN
    --
    i := 1; v_text := SUBSTR ( p_text, 1, 1023); v_len := LENGTH ( v_text);
    --
    UTL_FILE.PUT( p_filehandle, v_text);
    --
    WHILE v_len < LENGTH( p_text) LOOP v_text := SUBSTR( p_text, v_len + 1, 1023); v_len := LENGTH(v_text) + i*1023; i := i + 1; -- UTL_FILE.PUT( p_filehandle, v_text); -- END LOOP;
    --
    UTL_FILE.FFLUSH( p_filehandle );
    --
    EXCEPTION WHEN UTL_FILE.INVALID_FILEHANDLE THEN RAISE_APPLICATION_ERROR ( -20104 , 'SY_FILE.Put: Invalid File Handle'||CHR(10)||SQLErrM ); WHEN UTL_FILE.INVALID_OPERATION THEN RAISE_APPLICATION_ERROR ( -20105 , 'SY_FILE.Put: Invalid Operation'||CHR(10)||SQLErrM ); WHEN UTL_FILE.WRITE_ERROR THEN RAISE_APPLICATION_ERROR ( -20106 , 'SY_FILE.Put: Write Error'||CHR(10)||SQLErrM ); END put;
  • ------------------------------------- PROCEDURE new_line
  • ------------------------------------- ( p_filehandle IN File_Type , p_zeilen IN NATURAL := 1 ) IS BEGIN
    --
    UTL_FILE.NEW_LINE( p_filehandle, p_zeilen );
    --
    EXCEPTION WHEN UTL_FILE.WRITE_ERROR THEN RAISE_APPLICATION_ERROR ( -20107 , 'SY_FILE.New_Line: Write Error' ); END new_line;
  • ------------------------------------- PROCEDURE put_line
  • ------------------------------------- ( p_filehandle IN File_Type , p_text IN VARCHAR2 ) IS BEGIN
    --
    put( p_filehandle, p_text );
    --
    new_line( p_filehandle );
    --
    END put_line;

Hope this helps.

BTW, did you notice, that your posting was multiple?

Reinhard Received on Tue May 25 1999 - 16:37:17 CEST

Original text of this message