我正在将数据库从 Oracle 10.1 迁移到 11.2,但遇到以下问题。
声明
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
)
在原始 10.1 数据库上生成这样的 XML...
<?xml version="1.0" encoding="utf-8"?>
<Element1>
<Element2>
<Element3>
<ELEMENT4>content</ELEMENT4>
</Element3>
</Element2>
</Element1>
在新的 11.2 系统上它看起来像这样......
<?xml version="1.0" encoding="utf-8"?>
<Element1>
<Element3>
<ELEMENT4>content</ELEMENT4>
</Element3>
</Element1>
是否缺少一些环境变量告诉 Oracle 如何格式化其 XML。数据库中有几十万行PL/SQL;如果事实证明他们改变了 Oracle 在版本之间格式化 XML 的方式,那么重写将是一项艰巨的任务。
希望之前有人遇到过这个问题。 谢谢
最佳答案
在我看来,这可能是 v10 中的一个错误,因为您没有明确告诉 DBMS Element2 是一个 XMLElement。 XMLAgg 返回一个节点集,只是因为您给它起了别名“Element2”似乎并不表示它应该嵌套在具有该名称的元素中。
关于xml - Oracle 10.1 和 11.2 使用相同的语句生成不同的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376450/