微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数据添加到 FOR XML PATH SQL SERVER 的结果

如何解决将数据添加到 FOR XML PATH SQL SERVER 的结果

我有一个生成 XML 的查询,完全符合我的要求:

SELECT *
FROM [staging].[vw_mydata] 
FOR XML PATH('DOCUMENT')

代码产生此输出

<DOCUMENT>
      <broN>Bulk Import</broN>
      <INDEXEERDATUM>2015-07-30</INDEXEERDATUM>
      <ITEMVALUE1>ITEMVALUE1</ITEMVALUE1>
      <ITEMVALUE2>ITEMVALUE2</ITEMVALUE2>
      <ITEMVALUE3>ITEMVALUE3</ITEMVALUE3>
      <ITEMVALUE4>ITEMVALUE4</ITEMVALUE4>
      <ITEMVALUE5>ITEMVALUE5</ITEMVALUE5>
      <ITEMVALUE6>2015-07-30</ITEMVALUE6>
      <ITEMVALUE7>ITEMVALUE7</ITEMVALUE7>
      <ITEMVALUE8></ITEMVALUE8>
      <ITEMVALUE9></ITEMVALUE9>
      <ITEMVALUE10></ITEMVALUE10>
      <ITEMVALUE11>ITEMVALUE11</ITEMVALUE11>
</DOCUMENT>
      <broN>Bulk Import</broN>
      <INDEXEERDATUM>2015-07-30</INDEXEERDATUM>
      <ITEMVALUE1>ITEMVALUE1</ITEMVALUE1>
      <ITEMVALUE2>ITEMVALUE2</ITEMVALUE2>
      <ITEMVALUE3>ITEMVALUE3</ITEMVALUE3>
      <ITEMVALUE4>ITEMVALUE4</ITEMVALUE4>
      <ITEMVALUE5>ITEMVALUE5</ITEMVALUE5>
      <ITEMVALUE6>2015-07-30</ITEMVALUE6>
      <ITEMVALUE7>ITEMVALUE7</ITEMVALUE7>
      <ITEMVALUE8></ITEMVALUE8>
      <ITEMVALUE9></ITEMVALUE9>
      <ITEMVALUE10></ITEMVALUE10>
      <ITEMVALUE11>ITEMVALUE11</ITEMVALUE11>
</DOCUMENT>

但是,我需要在这个结果前后添加信息。

以下必须在查询结果之前。这部分是固定的,不会改变。

<?xml version="1.0"?>
<DOCUMENTS>
    <VERSION>2.0</VERSION>
    <LICENTIEHOUDER>Henrov</LICENTIEHOUDER>
    <XTN>BulkImport</XTN>
    <ARCHIEFNAAM>Name</ARCHIEFNAAM>
    <ITEMLABEL1>Label1</ITEMLABEL1>
    <ITEMLABEL2>Label2</ITEMLABEL2>
    <ITEMLABEL3>Label3</ITEMLABEL3>
    <ITEMLABEL4>Label4</ITEMLABEL4>
    <ITEMLABEL5>Label5</ITEMLABEL5>
    <ITEMLABEL6>Label6</ITEMLABEL6>
    <ITEMLABEL7>Label7</ITEMLABEL7>
    <ITEMLABEL8>Label8</ITEMLABEL8>
    <ITEMLABEL9>Label9</ITEMLABEL9>
    <ITEMLABEL10>Label0</ITEMLABEL10>
    <ITEMLABEL11>Label1</ITEMLABEL11>
    <ITEMLABEL12>Label2</ITEMLABEL12>
    <ITEMLABEL13>Label3</ITEMLABEL13>
    <ITEMLABEL14>Label4</ITEMLABEL14>
    <ITEMLABEL15>Label5</ITEMLABEL15>
    <ITEMLABEL16>Label6</ITEMLABEL16>
    <ITEMLABEL17>Label7</ITEMLABEL17>`

</DOCUMENTS> 需要添加到最后,这样整个结果看起来像这样:

<?xml version="1.0"?>
<DOCUMENTS>
<VERSION>2.0</VERSION>
<LICENTIEHOUDER>Henrov</LICENTIEHOUDER>
<XTN>BulkImport</XTN>
<ARCHIEFNAAM>Name</ARCHIEFNAAM>
<ITEMLABEL1>Label1</ITEMLABEL1>
<ITEMLABEL2>Label2</ITEMLABEL2>
<ITEMLABEL3>Label3</ITEMLABEL3>
<ITEMLABEL4>Label4</ITEMLABEL4>
<ITEMLABEL5>Label5</ITEMLABEL5>
<ITEMLABEL6>Label6</ITEMLABEL6>
<ITEMLABEL7>Label7</ITEMLABEL7>
<ITEMLABEL8>Label8</ITEMLABEL8>
<ITEMLABEL9>Label9</ITEMLABEL9>
<ITEMLABEL10>Label0</ITEMLABEL10>
<ITEMLABEL11>Label1</ITEMLABEL11>
<ITEMLABEL12>Label2</ITEMLABEL12>
<ITEMLABEL13>Label3</ITEMLABEL13>
<ITEMLABEL14>Label4</ITEMLABEL14>
<ITEMLABEL15>Label5</ITEMLABEL15>
<ITEMLABEL16>Label6</ITEMLABEL16>
<ITEMLABEL17>Label7</ITEMLABEL17>
<DOCUMENT>
<broN>Bulk Import</broN>
<INDEXEERDATUM>2015-07-30</INDEXEERDATUM>
<ITEMVALUE1>ITEMVALUE1</ITEMVALUE1>
<ITEMVALUE2>ITEMVALUE2</ITEMVALUE2>
<ITEMVALUE3>ITEMVALUE3</ITEMVALUE3>
<ITEMVALUE4>ITEMVALUE4</ITEMVALUE4>
<ITEMVALUE5>ITEMVALUE5</ITEMVALUE5>
<ITEMVALUE6>2015-07-30</ITEMVALUE6>
<ITEMVALUE7>ITEMVALUE7</ITEMVALUE7>
<ITEMVALUE8></ITEMVALUE8>
<ITEMVALUE9></ITEMVALUE9>
<ITEMVALUE10></ITEMVALUE10>
<ITEMVALUE11>ITEMVALUE11</ITEMVALUE11>
</DOCUMENT>
<broN>Bulk Import</broN>
<INDEXEERDATUM>2015-07-30</INDEXEERDATUM>
<ITEMVALUE1>ITEMVALUE1</ITEMVALUE1>
<ITEMVALUE2>ITEMVALUE2</ITEMVALUE2>
<ITEMVALUE3>ITEMVALUE3</ITEMVALUE3>
<ITEMVALUE4>ITEMVALUE4</ITEMVALUE4>
<ITEMVALUE5>ITEMVALUE5</ITEMVALUE5>
<ITEMVALUE6>2015-07-30</ITEMVALUE6>
<ITEMVALUE7>ITEMVALUE7</ITEMVALUE7>
<ITEMVALUE8></ITEMVALUE8>
<ITEMVALUE9></ITEMVALUE9>
<ITEMVALUE10></ITEMVALUE10>
<ITEMVALUE11>ITEMVALUE11</ITEMVALUE11>
</DOCUMENT>
</DOCUMENTS>

这需要导出为 XML 文件

我尝试执行 SELECT 'text in front' + (select for xml) + 'text after' 但这有一个不需要的结果:所有 <> 都替换为 &lt en &gt 有效地​​破坏了我的 xml。

所以基本上:如何在 FOR XML 查询结果的开头和结尾添加信息?

解决方法

只需为文档创建一个子查询。您需要使用 type 来防止 XML 标记转义。

SELECT 
'2.0' AS [VERSION],'Henrov' AS [LICENTIEHOUDER],-- Add all other fields.
(
    SELECT *
    FROM [staging].[vw_mydata] 
    FOR XML PATH('DOCUMENT'),type
)
FOR XML PATH('DOCUMENTS')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。