2010-11-23 4 views
0

Donc 11g je peux exécuter la plsql suivante sans aucun problème:pourquoi XMLTYPE.getClobVal() ne fonctionne pas sur 9i comme sur 11g?

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; 

Mais 9i les mêmes résultats de code dans un ORA-22275: LOB invalide erreur spécifiée.

Des idées pourquoi ce serait?

Répondre

0

L'exception provient-elle de l'appel dbms_lob.append? Il est supposé prendre deux LOB mais vous passez un littéral de chaîne comme second paramètre. Y a-t-il peut-être un changement dans la conversion de type implicite de 9i à 11g? Je n'ai plus aucune base de données 9i pour l'essayer.

0

Pardon, mais je ne peux pas le reproduire sur mon 9.2.0.1.0, cet exemple fonctionne parfaitement:

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

Pourriez-vous s'il vous plaît essayer celui-ci et y répondre si cela fonctionne pour vous?

0

Je ne sais pas si cela aide, mais vous pouvez essayer d'ouvrir votre variable clob première:

DBMS_LOB.createTemporary(lob1, cache => FALSE); 
DBMS_LOB.Open(lob1, DBMS_LOB.lob_readwrite); 
Questions connexes