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>
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