Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 XQuery value  [new]
kryak
Member

Откуда:
Сообщений: 396
Добрый день,

Помогите разобраться, не как не могу понять в чем ошибка.

Есть:
DECLARE @OrdersList XML
    ,   @i INT

SET @OrdersList  = '
<OrdersList>
  <Order ID="17">
  </Order>
  <Order ID="26">
  </Order>
</OrdersList>
'
SET @i = 1


Надо вытащить значение. Вот так - все работает:
SELECT  @OrdersList.value('(/OrdersList[1]/Order/@ID)[1]', 'int')


Но если пробовать подставить значение - то никак (((
SELECT  @OrdersList.value('(/OrdersList[1]/Order/@ID)[sql:variable("@i")]', 'int')
SELECT  @OrdersList.value('/OrdersList[1]/Order[sql:variable("@i")]/@ID', 'int')


Решать вот так - не вариант
SELECT  ID = t.c.value('@ID', 'int')
FROM    @OrdersList.nodes('/OrdersList/Order') AS t(c)
11 май 12, 15:18    [12537142]     Ответить | Цитировать Сообщить модератору
 Re: XQuery value  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

так?
SELECT  @OrdersList.value('((/OrdersList[1]/Order/@ID)[sql:variable("@i")])[1]', 'int')

Posted via ActualForum NNTP Server 1.5

11 май 12, 15:40    [12537372]     Ответить | Цитировать Сообщить модератору
 Re: XQuery value  [new]
kryak
Member

Откуда:
Сообщений: 396
Спасибо! Работает!

А можно немного пояснить к чему относится последний [1]
11 май 12, 15:46    [12537427]     Ответить | Цитировать Сообщить модератору
 Re: XQuery value  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> А можно немного пояснить к чему относится последний *[1]*

в смысле - к чему? к выражению в скобках, к чему ж еще?

чтоб гарантировать атомарность, оно хочет, чтобы именно
константой порядковый номер был указан, я так понимаю.


Posted via ActualForum NNTP Server 1.5

11 май 12, 15:54    [12537513]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить