3

此声明如下:

SELECT
    ....
FROM
    ....
WHERE
    ....
FOR XML PATH('Booking'), ROOT('doc')

这将返回一个 XML 字符串中的所有记录。我希望每条记录都有自己的 XML 字符串。这有意义吗?可能吗。这样做有意义吗?

我正在使用 Microsoft SQL Server 2008

4

1 回答 1

1

如果我理解正确,您希望每一行生成一个单独的 XML 文档(没有“XML 字符串”之类的东西)。您需要通过 FOR XML运行每一行。例如,从表中取出每一行并使用CROSS APPLY运算符来投影一行FOR XML TYPE。使用行表值构造函数进行连接。例如。使用 master..spt_values:

select t.*
 from master..spt_values s
 cross apply (
 select s.* 
 from (values (1) ) as t(c) 
 for xml path('Boookin'), root('Doc'), type) as t(x)

每行将返回一个 XML 文档,其结构如下:

<Doc>
  <Boookin>
    <name>rpc</name>
    <number>1</number>
    <type>A  </type>
    <status>0</status>
  </Boookin>
</Doc>

用您选择的表替换 master..spt_values。

于 2010-08-17T05:52:36.707 回答