【发布时间】:2017-01-27 16:23:50
【问题描述】:
我需要在 Oracle 数据库上使用 SQL 生成文件 XML。我很难找到写语法
SELECT
XMLParse(CONTENT '<company><siret></siret><type></type></company>'WELLFORMED),
(XMLELEMENT("file",
XMLParse(CONTENT '<data>'WELLFORMED),
XMLAGG(XMLELEMENT("name",DECODE (INDIV.NAME, null, TRIM(INDIV.NAMEO), TRIM(INDIV.NAME)))),
XMLAGG(XMLELEMENT("nir",TRIM(INDIV.NIR))),
XMLAGG(XMLELEMENT("BIRTH",INDIV.DATE_BIRTH)),
XMLParse(CONTENT '</data><file-formation>'WELLFORMED),
XMLAGG(XMLELEMENT("id",' ')),
XMLAGG(XMLELEMENT("statut",' ')),
XMLAGG(XMLELEMENT("title",' ')),
XMLAGG(XMLELEMENT("code",' ')),
XMLAGG(XMLELEMENT("code-motif",' ')),
XMLAGG(XMLELEMENT("modalite",' ')),
XMLParse(CONTENT '<place>'WELLFORMED),
XMLAGG(XMLELEMENT("code",' ')),
XMLAGG(XMLELEMENT("city",' ')),
XMLParse(CONTENT '</place>'WELLFORMED),
XMLAGG(XMLELEMENT("date-start",' ')),
XMLAGG(XMLELEMENT("date-end",' ')),
XMLParse(CONTENT '<orga>'WELLFORMED),
XMLAGG(XMLELEMENT("siret",' ')),
XMLAGG(XMLELEMENT("ra",' ')),
XMLParse(CONTENT '</orga><beneficiaire>'WELLFORMED),
XMLAGG(XMLELEMENT("statut", DECODE (PRES.INSCRIT_PE, 1, 1, 2))),
XMLParse(CONTENT '</modalite>'WELLFORMED),
XMLAGG(XMLELEMENT("time", ACT.HEURE)),
XMLAGG(XMLELEMENT("cost",' ')))),
XMLParse(CONTENT '</file-formation></file></cpf:trainning>'WELLFORMED)
FROM
STAGIAIRE STAG
INNER JOIN INDIVIDU INDIV
ON STAG.ID_INDIVIDU = INDIV.ID_INDIVIDU
INNER JOIN PRESCRIPTION PRES
ON PRES.ID = STAG.ID
INNER JOIN ACTION ACT
ON ACT.ID_ACTION = PRES.ID_ACTION
INNER JOIN PARCOURS PARC
ON PARC.ID = ACT.ID;
如您所见,我的最终 XML 文件中有很多空数据,但目前我的 XML 中只有名称... 如何在 XMLAGG 之后添加我的所有 XMLELEMENT
更准确地说,我需要创建以下 XML。第一部分 <company></company> 对于我将创建的每个 XML 文档都是相同的,然后对于第二部分 <file></file> 我需要在我的数据库中拥有与 <file> 一样多的 <file>
<company>
<siret></siret>
<type></type>
</company>
<file>
<data>
<name>DECODE (INDIV.NAME, null, TRIM(INDIV.NAMEO), TRIM(INDIV.NAME)</name>
<nir>TRIM(INDIV.NIR)</nir>
<birth> INDIV.DATE_BIRTH</birth>
</data>
<file-formation>
<id></id>
<statut></statut>
<title></title>
<code></code>
<code-motif></codeMotif>
<modalite></modalite>
<place>
<code></code>
<city></city>
</place>
<date-start></date-start>
<date-end></date-end>
<orga></orga>
<siret></siret>
<ra></ra>
<beneficiaire>
<statut> DECODE (PRES.INSCRIT_PE, 1, 1, 2)</statut>
<time>ACT.HEURE</time>
<cost></cost>
</file-formation>
</file>
我理解我的错误,所以我在<file> 元素之前添加了 XMLAGG,但它仍然无法正常工作...我应该有一个包含超过 3000 个<file> 的文件,而我只有一行...
我很难找到正确的方法
SELECT
XMLParse(CONTENT '<company><siret></siret><type></type></company>'WELLFORMED),
XMLAGG(XMLELEMENT("file",
XMLParse(CONTENT '<data>'WELLFORMED),
(XMLELEMENT("name",DECODE (INDIV.NAME, null, TRIM(INDIV.NAMEO), TRIM(INDIV.NAME)))),
(XMLELEMENT("nir",TRIM(INDIV.NIR))),
(XMLELEMENT("BIRTH",INDIV.DATE_BIRTH)),
XMLParse(CONTENT '</data><file-formation>'WELLFORMED),
(XMLELEMENT("id",' ')),
(XMLELEMENT("statut",' ')),
(XMLELEMENT("title",' ')),
(XMLELEMENT("code",' ')),
(XMLELEMENT("code-motif",' ')),
(XMLELEMENT("modalite",' ')),
XMLParse(CONTENT '<place>'WELLFORMED),
(XMLELEMENT("code",' ')),
(XMLELEMENT("city",' ')),
XMLParse(CONTENT '</place>'WELLFORMED),
(XMLELEMENT("date-start",' ')),
(XMLELEMENT("date-end",' ')),
XMLParse(CONTENT '<orga>'WELLFORMED),
(XMLELEMENT("siret",' ')),
(XMLELEMENT("ra",' ')),
XMLParse(CONTENT '</orga><beneficiaire>'WELLFORMED),
(XMLELEMENT("statut", DECODE (PRES.INSCRIT_PE, 1, 1, 2))),
XMLParse(CONTENT '</modalite>'WELLFORMED),
(XMLELEMENT("time", ACT.HEURE)),
(XMLELEMENT("cost",' ')))),
XMLParse(CONTENT '</file-formation></file></cpf:trainning>'WELLFORMED)
FROM
STAGIAIRE STAG
INNER JOIN INDIVIDU INDIV
ON STAG.ID_INDIVIDU = INDIV.ID_INDIVIDU
INNER JOIN PRESCRIPTION PRES
ON PRES.ID = STAG.ID
INNER JOIN ACTION ACT
【问题讨论】:
-
"如您所见..." - 您没有向我们展示您引用的最终 XML 文件、原始数据或您实际想要的输出。不确定您希望我们在没有任何信息的情况下能做什么?