2010-10-31 3 views
1

Хорошо, не уверен, если это возможно сделать ..Добавление уникального количества строк в инструкцию SQL 2008 "for xml path"?

У меня есть запрос, который возвращает только простые записи из базы данных, но отформатирован, как 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> 

Как вы можете видеть, я действительно мог бы сделать с узлом возвращения с атрибутом сказать @@ сверку или даже поле от оператора выбора (не уверен, что это возможно !!)

Любая помощь очень ценится !!! Дэвид.

ответ

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 означает, в точке, где она получает повернутым в атрибут.

+0

Привет, спасибо! вау, который был действительно DOH !! момент на моей стороне. Я забыл, что вы можете просто добавить псевдоним в виде xxx как «@id», чтобы создать атрибут. –

+0

Извините, кроме того, что касается @ @ rowcount, это было необходимо для обеспечения последовательности - я использую сетки данных www.dhtmlx.com, и для каждой строки требуется какая-то уникальная последовательность. Очевидно, в этом случае Мне просто нужна последовательность выполнения, однако, конечно, можно использовать идентификатор записи и т. Д. Большое спасибо за отзыв, очень оцененный. –