如何在不使用xmlaggregation的情况下获取多个xml元素

时间:2013-08-13 10:14:33

标签: xml oracle

我需要从oracle-database创建以下xml结构 每个调查可以有多个参与者。 我不确定使用XMLElement创建它而不会收到消息“ORA-01427 subsquery返回多行一行” 我可以尝试使用dbms_xmldom(之前从未这样做过)但我想知道是否有人知道如何使用普通的Oracle SQL-XML函数(XMLElement,XMLAggr)生成它

    <NieuweSurveys>
        <Survey>
            <Surveynaam>2013-02-01</Surveynaam>         
            <Startdatum>2013-02-01</Startdatum>
            <Einddatum>2013-02-15</Einddatum>
            <Deelnemer>
                <Voornaam>Tilde</Voornaam>
                <Tussenvoegsel/>
                <Achternaam>DeelnemerA</Achternaam>
                <Geslacht>man</Geslacht>
                <Emailadres>tilde.deelnemer.a@tjip.com</Emailadres>
                <Voorkeurstaal>nl</Voorkeurstaal>
                <Account>Schouten & Nelisen</Account>
                <Functie>bouwer</Functie>
            </Deelnemer>
            <Deelnemer>
                <Voornaam>Tilde</Voornaam>
                <Tussenvoegsel/>
                <Achternaam>DeelnemerB</Achternaam>
                <Geslacht>vrouw</Geslacht>
                <Emailadres>tilde.deelnemer.b@tjip.com</Emailadres>
                <Voorkeurstaal>nl</Voorkeurstaal>
                <Account>Schouten & Nelisen</Account>
                <Functie>tester</Functie>
            </Deelnemer>
        </Survey>
</NieuweSurveys>

2 个答案:

答案 0 :(得分:0)

假设所有数据都来自名为dataview的单个表(或视图)......

我认为你需要在那里使用XMLForest。例如,

Create or Replace VIEW dataviewxml as
Select 
XMLElement("NieuweSurveys", 
 XMLForest(d.Surveynaam as Surveynaam, d.Startdatum as Startdatum, d.Eindatum as Eindatum,
  XMLForest(d.Voornaam as Voornaam, d.Tussenvoegsel as Tussenvoegsel
           ) as "Deelnemer"
         ) as "Survey"
         ) as "Result"
from dataview d;

答案 1 :(得分:0)

将XQuery表达式与SQL / XML标准函数XMLQueryXMLTable一起使用。 以下是两个与从关系数据构造XML相关的示例: