所以在11g上我可以毫无问题地执行以下plsql:
DECLARE
lob1 CLOB;
BEGIN
SELECT e.xml_col.getClobVal() INTO lob1 FROM "XML"."XML_TABLE" e WHERE KEY_COL=3 ;
DBMS_LOB.APPEND(lob1, 'is a test node</test>');
END;
但是在9i上,相同的代码导致ORA-22275:LOB定位器指定了无效的错误。
为什么会有这样的想法?
答案 0 :(得分:0)
异常来自dbms_lob.append调用吗?它应该采用两个LOB,但你传递一个字符串文字作为第二个参数。从9i到11g的隐式类型转换是否有变化?我没有任何9i数据库可以试用。
答案 1 :(得分:0)
请原谅,但是我无法在9.2.0.1.0上重现它,这个例子完美无缺:
declare
fOrigXml XmlType := XmlType(
'<RootNode>
<ChildNodes>
</ChildNodes>
</RootNode>');
t clob;
begin
select fOrigXml.getClobVal() into t from dual;
dbms_lob.append(t, '4343');
dbms_output.put_line(t);
end;
/
请你试试这个并回复一下这是否适合你?
答案 2 :(得分:0)
我不确定这是否有帮助,但您可以先尝试打开clob变量:
DBMS_LOB.createTemporary(lob1, cache => FALSE);
DBMS_LOB.Open(lob1, DBMS_LOB.lob_readwrite);