0

假设我们有一个表“名称”:

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>

简而言之,我该如何包装整个批次?

4

2 回答 2

2

试试这个:

SELECT 
   Name,
   Surname
FROM 
   dbo.Names
FOR XML PATH('person'), ROOT('people')

FOR XML PATH定义标记以围绕每个单独的行,而定义FOR XML ... ROOT围绕行集合的根元素。

于 2010-07-06T07:43:44.427 回答
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;
于 2010-07-06T07:43:33.763 回答