2010-11-23 88 views
0

所以11g上,我可以没有任何问题执行以下PLSQL:为什么XMLTYPE.getClobVal()不能像11g一样在9i上工作?

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

dbms_lob.append调用是否异常?它应该占用两个LOB,但是您将传递一个字符串作为第二个参数。从9i到11g的隐式类型转换可能有变化吗?我没有任何9i数据库可以试用。

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; 
/

能否请您试试这个和回复这是否对你的作品?

0

我不知道如果这有助于但是你可以尝试先打开你的CLOB变量:

DBMS_LOB.createTemporary(lob1, cache => FALSE); 
DBMS_LOB.Open(lob1, DBMS_LOB.lob_readwrite); 
相关问题