[英]How to extract data in tabular format from XML field in Oracle database?
[英]How can I extract relational data from an Oracle database into a structured XML file?
我在Oracle数据库(11gR2)中有一个简单的表结构。 使用通用术语,我有“组”而不是包含一个或多个“项目”; 即一对多的关系。 因此“item”表有一个“group_id”字段,它是“group”表中同一字段的外键。
我可以用一个查询从XML数据库中提取这些数据吗? 我希望结果是这样的:
<groups>
<group name="group1">
<item name="item1">
<item name="item2">
</group>
<group name="group2">
<item name="item3">
<item name="item4">
</group>
</groups>
我开始在PL / SQL过程中将其写为循环中的循环,即循环遍历组,然后遍历每个组中的项目,但这似乎是冗长的。 我希望有一个查询使用“XMLTable”或“XMLForest”我可以用于这种结构。
使用XmlAgg(聚合你的GROUP BY
):
SELECT CAST(
XmlElement("groups",
XmlAgg(
XmlElement(
"group"
,XmlAttributes(g.name as "name")
,XmlAgg(
XmlElement(
"item"
,XmlAttributes(i.name as "name")
)
)
)
)
)
AS VARCHAR2(4000)
) MY_XML
FROM group g
INNER JOIN item i ON i.groupid = g.id
GROUP BY g.name
;
请参阅XMLAgg文档: http ://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb13gen.htm#i1032865
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.