Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> reading a CLOB with a PL/SQL Procedure

reading a CLOB with a PL/SQL Procedure

From: Markus Boehmer <markus.boehmer_at_schaefer-shop.de>
Date: Fri, 05 Oct 2001 08:18:34 +0200
Message-ID: <3BBD50BA.9090400@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>

My problem is, that I get the Oracle Error ORA-06502. The Version of the DB is 8.1.5 on Solaris. It says, that the String buffer is too small if the length of the CLOB exceeds 4k.
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 - 01:18:34 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US