将数据添加到 FOR XML PATH SQL SERVER 的结果
Add data to result of 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'
但结果不理想:所有 <
和 >
都被 <
en >
替换,有效地破坏了我的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')
我有一个生成 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'
但结果不理想:所有 <
和 >
都被 <
en >
替换,有效地破坏了我的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')