让我们说我们有一个表“名字”:
ID Name Surname
1 Matt Smith
2 John Doe
如何编写一些SQLXML来生成它:
<people>
<person>
<name>Matt</name>
<surname>Smith</surname>
<person>
<person>
<name>John</name>
<surname>Doe</surname>
<person>
</people>
我得到的最好的是:
select r.value('Name[1]', 'nvarchar(10)'), r.value('Surname[1]', 'nvarchar(10)')
from Names
for xml path('people')
这给了我:
<people>
<name>Matt</name>
<surname>Smith</surname>
</people>
<people>
<name>John</name>
<surname>Doe</surname>
</people>
简而言之,我如何包装整个批次?
答案 0 :(得分:2)
试试这个:
SELECT
Name,
Surname
FROM
dbo.Names
FOR XML PATH('person'), ROOT('people')
FOR XML PATH
定义围绕每个行的标记,而FOR XML ... ROOT
定义围绕行集合的根元素。
答案 1 :(得分:0)
如果你想用xml方式做这个,
您可以拥有变量,
Declare @XMLOP xml
SET @XMLOP = '<people></people>'
set @XMLOP.modify('
insert (select r.value('Name[1]', 'nvarchar(10)'), r.value('Surname[1]', 'nvarchar(10)')
from Names
for xml path('Person'))
after (/people)[1]
');
SELECT @XMLOP;