1

我需要从一个 oracle 数据库创建以下 xml 结构,其中每个调查都可以有多个参与者。我不确定使用 XMLElement 创建它而不收到消息“ORA-01427 子查询返回多于一行”我可以尝试使用 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>
4

2 回答 2

0

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

于 2013-08-14T06:08:01.523 回答
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;
于 2013-08-13T14:01:09.597 回答