如何释放CLOB使用的表空间

时间:2015-03-23 13:46:12

标签: c# asp.net oracle tablespace

我有一个存储过程,其输入参数类型为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'不能用作任务目标

有人可以解释如何释放输入参数使用的表空间吗?

感谢您的帮助和时间。

0 个答案:

没有答案