reading CLOB with a PL/SQL Procedure

From: Markus Boehmer <markus.boehmer_at_schaefer-shop.de>
Date: Fri, 05 Oct 2001 08:19:40 +0200
Message-ID: <3BBD50FC.707_at_schaefer-shop.de>



Hi folks,

I insert a dataset into a table using the following procedure:

<CODE>

CREATE OR REPLACE PROCEDURE WRITE_KATALOGTEXT(IN_DOKUID CHAR, IN_ARTNR
NUMBER, IN_TEXT VARCHAR2, IN_DATUM DATE) IS LOB_LOC CLOB;
BEGIN
INSERT INTO TEXTCASTOR (DOKUID, ARTNR, TEXT, DATUM) VALUES (IN_DOKUID,
IN_ARTNR, EMPTY_CLOB(), IN_DATUM);
COMMIT;
SELECT TEXT INTO LOB_LOC FROM TEXTCASTOR WHERE DOKUID=IN_DOKUID AND ARTNR=IN_ARTNR AND DATUM=IN_DATUM FOR UPDATE;
DBMS_LOB.WRITE (LOB_LOC, length(IN_TEXT), 1, IN_TEXT); COMMIT;
END;
/
</CODE>

After this insert I try to read from the table using the following Procedure

<CODE>

CREATE OR REPLACE FUNCTION GET_KATALOGTEXT(IN_ARTNR NUMBER) RETURN VARCHAR2 IS
BUFFER CLOB;
MY_RETURNVALUE VARCHAR2(32767);
MY_ARTNR NUMBER(6):=IN_ARTNR;
BEGIN
SELECT TEXT INTO BUFFER FROM WORKFLOWOWNER.TEXTCASTOR WHERE ARTNR=MY_ARTNR;
MY_RETURNVALUE:=DBMS_LOB.SUBSTR(BUFFER, 32767, 1); RETURN MY_RETURNVALUE;
END;
/
</CODE>

[Quoted] My problem is, that I get the Oracle Error ORA-06502. The version of the DB is 8.1.5 on solrais. It says, that the String buffer is too small if the length of the CLOB exceeds 4k.
[Quoted] Writing works with values having a length of over fourthousand characters.
Reading only works with values having a length of less than fourthousand characters.
Has anyone a clue how to handle this?

Greetings
Markus

-- 
Markus Böhmer
Datenbankentwickler
SSI Schäfer Shop GmbH
mailto:markus.boehmer_at_schaefer-shop.de
Received on Fri Oct 05 2001 - 08:19:40 CEST

Original text of this message