将唯一行计数添加到SQL 2008“for xml path”语句中?

时间:2010-10-31 11:10:34

标签: sql sql-server xml sqlxml

好的,不确定这是否可行..

我有一个查询只返回数据库中的简单记录,但格式化为XML,如下所示:

select name, address, dateCreated, flag
from table
where name = 'test'
for xml path('row'), root('rows')

好的,没有问题,我按照需要获得了XML:

<rows>
  <row>
    <name>jddjdjd</name>
    <address>dkdkdkdkdkd</address>
    .. and so on...
  </row>
</rows>

但是我想要找到的是

如果我可以按如下方式返回XML:

<rows>
  <row id='@@rowcount'>
    <name>jddjdjd</name>
    <address>dkdkdkdkdkd</address>
    .. and so on...
  </row>
</rows>

正如你所看到的,我真的可以用返回的节点返回一个@@ rowcount的属性,甚至是select语句中的一个字段(不确定是否可能!)

任何帮助非常感谢!!! 大卫。

1 个答案:

答案 0 :(得分:2)

您可以将@@rowcount设为'@id',例如:

declare @t table (name varchar(25))

insert @t (name) values ('jddjdjd')

select  @@rowcount as '@id'
,       name
from    @t
for xml path('row'), root('rows')

打印:

<rows>
    <row id="1">
        <name>jddjdjd</name>
    </row>
</rows>

但是,我不确定它是否明确定义了@@rowcount在转变为属性时的含义。