xml - Oracle 10.1 和 11.2 使用相同的语句生成不同的 XML

标签 xml oracle

我正在将数据库从 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/

相关文章:

xml - 使用 xslt 2.0 拆分大型 xml 文件

xml - LINQ to XML 和 Distinct 自定义类

xml - targetNamespace 和 xmlns

java - 在 Java 中将 XML 文档复制到字符串变量中

sql - 如何使用动态数据库切换为单个grails Web应用程序创建多个URL

sql - Oracle sql 创建查询只返回一个 'employee' 的值

java - 如何以编程方式设置 Vector Drawable 的组参数?

sql - 如何在Oracle中获得当前的GMT

java - Mybatis 查询插入 java 对象列表失败

sql - 如何从 bash 脚本中执行 SQL?