2010-03-04 30 views
5

Ich migriere eine Datenbank von Oracle 10.1 auf 11.2 und ich habe das folgende Problem.Oracle 10.1 und 11.2 produzieren verschiedene XML-Daten mit der gleichen Anweisung

Die Aussage

SELECT 
     '<?xml version="1.0" encoding="utf-8" ?>' || (Xml).getClobVal() AS XmlClob 
FROM 
(
    SELECT 
    XmlElement("Element1", 
     (
     SELECT 
      XmlAgg(tpx.Xml) 
     FROM 
      (
     SELECT 
      XmlElement("Element3",XmlForest('content' as Element4)) AS Xml 
     FROM dual 
     ) tpx 
    ) AS "Element2" 
    ) AS Xml 
    FROM 
    dual 
) 

Auf der ursprünglichen 10.1 Datenbank erzeugt XML so ...

<?xml version="1.0" encoding="utf-8"?> 
<Element1> 
    <Element2> 
    <Element3> 
     <ELEMENT4>content</ELEMENT4> 
    </Element3> 
    </Element2> 
</Element1> 

Auf dem neuen 11,2-System sieht es so aus ...

<?xml version="1.0" encoding="utf-8"?> 
<Element1> 
    <Element3> 
    <ELEMENT4>content</ELEMENT4> 
    </Element3> 
</Element1> 

Gibt es eine Umgebungsvariable, die ich Oracle fehlt, wie er sein XML formatiert? Es gibt Hunderttausende von PL/SQL-Zeilen in der Datenbank; Es wäre eine Mammutaufgabe neu zu schreiben, wenn sich herausstellen sollte, dass sie sich so verändert haben, wie Oracle XML zwischen Versionen formatiert.

Hoffentlich ist jemand schon mal darüber gekommen. Dank

+1

Opps, habe ich einen nicht generischen Methodenaufruf in der Probe gelassen. Wenn Sie ersetzen Pkg_Translate.getXmlHeader Mit '' sollten Sie in der Lage sein, dieses Problem auf jeder Kopie von Oracle zu sehen, 10 oder 11. –

Antwort

0

Ich habe keinen Zugriff auf die Suche Metalink, aber Sie können sehen, ob es Beiträge zu dieser Funktionalität Unterschied gibt, wenn Sie ein Konto haben.

Ich kann dieses Problem auf 10.2.0.1 vs 11g mit Ihrer Beispielabfrage reproduzieren. Ich habe keine Informationen in den Versionshinweisen für 11g gefunden, die irgendeine Art von Standardverhaltensänderung wie diese beschreiben. Sie können auch einen Fall mit Oracle Support öffnen, wenn Sie einen Supportvertrag haben.

1

Sieht für mich wie ein möglicher Fehler in der v10, da Sie dem DBMS nicht explizit sagen, dass Element2 ein XMLElement ist. XMLAgg gibt einen Knotensatz zurück, und nur weil Sie ihm einen Alias ​​von "Element2" gegeben haben, scheint dies nicht darauf hinzudeuten, dass er in einem Element dieses Namens verschachtelt sein sollte.

Verwandte Themen