我的存储函数使用以下方法创建临时 LOB 实例:Dbms_Lob.CreateTemporary(BUFFER, TRUE, Dbms_Lob.SESSION);
where BUFFER
is a local CLOB
variable。之后,该函数会填充BUFFER
一些数据并将其返回。
Dbms_Lob.CreateTemporary
在我的情况下,持续时间参数是Dbms_Lob.SESSION
,但根据oracle 文档:
传递给 dbms_lob.createtemporary()的持续时间参数是一个提示。新临时 LOB 的持续时间与 PL/SQL 中定位器变量的持续时间相同。例如,在前面的程序块中,程序变量a具有驻留帧的持续时间。因此,在块结束时, a 的内存将在函数结束时被释放。
所以BUFFER CLOB
离开功能块后可能会被Oracle破坏。我可以看到,在某些情况下,当 BUFFER 超过 32K 时,我无法读取从 Java(JDBC)端以这种方式返回的值。
有没有其他方法可以从函数返回临时 CLOB 实例?