我有一个存储过程,其输入参数类型为CLOB。 在将数据插入表中的过程中,此参数的用法如下。
PROCEDURE sp_Proc1(ret_Num1 OUT INTEGER, tmpData IN CLOB)
AS
BEGIN
INSERT INTO MyTable
WITH S AS (SELECT XMLTYPE(tmpData) AS XML FROM dual)
SELECT Col1, Col2, Col3
FROM S,
XMLTABLE('/AllData/Data'
PASSING S.XML
COLUMNS
Col1 VARCHAR2(250 BYTE) PATH '/Data/Col1',
Col2 VARCHAR2(250 BYTE) PATH '/Data/Col2',
Col3 NUMBER PATH '/Data/Col3'
) SDATA;
END sp_Proc1;
我使用这种方法,因为我需要插入多个记录,这些记录是作为在C#.Net中的字符串变量中创建的XML传递的。 当从C#.Net代码调用此过程时,使用此字符串变量分配tmpData,而不是使用dbms_lob.createtemporary创建的clob。
执行此程序几次后,我会遇到
ORA-01652:无法在表空间TEMP中将临时段扩展32000。
我试过用 dbms_lob.freetemporary(tmpdata伪); 在过程结束时但无法使用
进行编译PLS-00363:表达' TMPDATA'不能用作任务目标
有人可以解释如何释放输入参数使用的表空间吗?
感谢您的帮助和时间。