首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从oracle11 DB生成XML

从oracle11 DB生成XML
EN

Stack Overflow用户
提问于 2014-11-09 14:28:04
回答 1查看 31关注 0票数 0

我需要从oracle 11数据库生成下面给出的xml格式。所有标记名都是静态字符串。节点D1,D2,D3等的数据我能够使用2表连接在单个查询中获得。

如果我使用XMLElement("Node1",XMLElement("Node2",XMLElement("Node3",XMLElement("D1",.....然后,即使是Node1,Node2也会随每行数据一起返回。我只需要Node1和Node2一次在顶部打开,在底部关闭。你知道我该怎么做吗?

代码语言:javascript
复制
<Node1>
   <Node2 key = "XYZ">
        <Node3>
            <D1> R1F1 </D1>
            <D2> R1F2 </D2>
            <D3> R1F3 </D3>
        </Node3>
        <Node3>
            <D1> R2F1 </D1>
            <D2> R2F2 </D2>
            <D3> R2F3 </D3>
        </Node3>
        <Node3>
        <D1> R3F1 </D1>
        <D2> R3F2 </D2>
        <D3> R3F3 </D3>
        </Node3>
   </Node2>
</Node1>
EN

回答 1

Stack Overflow用户

发布于 2014-11-10 06:02:49

请尝试

代码语言:javascript
复制
WITH
Dat (c1, c2, c3) AS (
  SELECT 'R1F1', 'R1F2', 'R1F3' FROM DUAL UNION ALL
  SELECT 'R2F1', 'R2F2', 'R2F3' FROM DUAL UNION ALL
  SELECT 'R3F1', 'R3F2', 'R3F3' FROM DUAL
)
SELECT
  XMLSerialize(CONTENT XMLElement("Node1", XMLElement("Node2", XMLAttributes ('XYZ' AS "key"),(SELECT XMLAgg(XMLElement("Node3", XMLElement("D1", c1), XMLElement("D2", c2), XMLElement("D3", c3))) FROM Dat)))) doc FROM DUAL
;

在Oracle11.2上返回:<Node1><Node2 key="XYZ"><Node3><D1>R1F1</D1><D2>R1F2</D2><D3>R1F3</D3></Node3><Node3><D1>R2F1</D1><D2>R2F2</D2><D3>R2F3</D3></Node3><Node3><D1>R3F1</D1><D2>R3F2</D2><D3>R3F3</D3></Node3></Node2></Node1>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26825648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档