Plsql ORA-22275的原因:指定的LOB定位器无效

Plsql ORA-22275的原因:指定的LOB定位器无效,plsql,clob,Plsql,Clob,我有下面的代码 DECLARE tmp_ CLOB := empty_clob(); BEGIN Dbms_Output.Put_Line('Test 4: Set CLOB "A" and then overwrite with empty_clob():'); Dbms_Output.Put_Line(' Expected: <PARENT><VALUE></VALUE></PARENT>'

我有下面的代码

DECLARE

      tmp_ CLOB := empty_clob();

   BEGIN

      Dbms_Output.Put_Line('Test 4: Set CLOB "A" and then overwrite with empty_clob():');

      Dbms_Output.Put_Line('   Expected: <PARENT><VALUE></VALUE></PARENT>');

      in_ := Plsqlap_Record_API.New_Record('PARENT');

      Plsqlap_Record_API.Set_Value(in_, 'VALUE', TO_CLOB('A'));

      Plsqlap_Record_API.Set_Value(in_, 'VALUE', tmp_);

      Plsqlap_Record_API.To_Xml(xml_, in_);

      Plsqlap_Record_API.Clear_Record(in_);

      Dbms_Output.Put_Line('   Result:   ' || xml_);

   EXCEPTION 

      WHEN OTHERS THEN

          Dbms_Output.Put_Line('   Result:   ' || SQLERRM);

   END;
声明
tmp_uclob:=空的_CLOB();
开始
Dbms_Output.Put_Line('测试4:设置CLOB“A”,然后用空的_CLOB()覆盖:');
Dbms_Output.Put_行('Expected:');
in:=Plsqlap_Record_API.New_Record('PARENT');
Plsqlap_Record_API.Set_Value(在“Value”中)设置为_CLOB('A');
Plsqlap_记录_API.Set_值(在“值”中,tmp_);
Plsqlap_Record_API.To_Xml(Xml_u,in_u);
Plsqlap_记录_API。清除_记录(in_);
Dbms|u Output.Put_行('Result:'| | xml|);
例外情况
当其他人
Dbms_Output.Put_行('Result:'| | SQLERRM);
结束;

结果

测试4:设置CLOB“A”,然后用空的\u CLOB()覆盖:
预期结果:ORA-22275: 指定的LOB定位器无效


尝试如下初始化clob:

dbms_lob.createtemporary(tmp_,true)

与此相反:


tmp_u-CLOB:=empty_-CLOB()

尝试如下初始化clob:

dbms_lob.createtemporary(tmp_,true)

与此相反:


tmp_u-CLOB:=empty_-CLOB()

您不能声明tmp\uclob:=empty\u CLOB()

因为这是DBMS_LOB的实现限制

根据oracle文档:为了成功完成DBMS_LOB子程序,必须提供一个输入定位器,该定位器表示数据库表空间或外部文件系统中已经存在的LOB

你可以参考


正如Plirkee所建议的,声明临时过程参数是有效的

您不能声明tmp_u-CLOB:=empty_-CLOB()

因为这是DBMS_LOB的实现限制

根据oracle文档:为了成功完成DBMS_LOB子程序,必须提供一个输入定位器,该定位器表示数据库表空间或外部文件系统中已经存在的LOB

你可以参考


根据Plirkee的建议,声明临时过程参数是有效的

请确保在发布前访问SO。请确保在发布前访问SO。@user3235283欢迎您。别忘了投票并接受。@user3235283不客气。别忘了投票并接受。