2010-11-23 34 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); 
相關問題