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

Откуда: СПб
Сообщений: 324
Добрый день.
В общем вопрос в теме, а тут кое-какие пояснения.
делаю
declare @l_xml xml;
declare @l_node varchar(4000)

set @l_node = 'N1'
set l_xml = cast('<R><N1>qqq</N1><N2>www</N2></R>');
select @l_xml.value('(/R/sql:variable("l_node")/node(1))[1]', 'nvarchar2(4000)')

При этом падает ощшибка:
XQuery [value()]: The XQuery syntax '/function()' is not supported.

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

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

Заранее благодарен.
14 фев 11, 11:35    [10230907]     Ответить | Цитировать Сообщить модератору
 Re: Как в xml.value первый параметр задать с переменной?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Гришков Максим,

declare @l_xml xml;
declare @l_node varchar(4000)

set @l_node = 'N1'
set @l_xml = '<R><N1>qqq</N1><N2>www</N2></R>';
select @l_xml.value('(/R/*[local-name() = sql:variable("@l_node")])[1]', 'nvarchar(4000)')
14 фев 11, 11:52    [10231037]     Ответить | Цитировать Сообщить модератору
 Re: Как в xml.value первый параметр задать с переменной?  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
iljy,

Спасибо огромное!!!!!!!!!!
14 фев 11, 11:55    [10231071]     Ответить | Цитировать Сообщить модератору
 Re: Как в xml.value первый параметр задать с переменной?  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Блин, так тоже не получает ся сделать insert:
declare l_value nvarchar(4000)
set l_value = 'TTTT'
set @l_xml.modify('insert <*[local-name() = sql:variable("@l_node")]>*[local-name() = sql:variable("@l_value")]</*[local-name() = sql:variable("@l_node")]> into (/R)[1]');
Ошибка:
XQuery [modify()]: Syntax error near 'insert', expected an identifier

Как теперь сделать?
Где можно про все это почитать?
14 фев 11, 12:42    [10231475]     Ответить | Цитировать Сообщить модератору
 Re: Как в xml.value первый параметр задать с переменной?  [new]
daw
Member

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

> Как теперь сделать?

2008-ой поддерживает вставку xml. в 2005-ом - через преобразование
к строке, если только, можно сделать.

Posted via ActualForum NNTP Server 1.4

14 фев 11, 13:05    [10231658]     Ответить | Цитировать Сообщить модератору
 Re: Как в xml.value первый параметр задать с переменной?  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Сделал, но мне кажется должен быть другой способ:
создаю столбец с явным названием "_TMP_"
set @l_xml.modify('insert <_TMP_>{sql:variable("@l_value")}</_TMP_> into (/R)[1]');
declare @l_xml_str nvarchar(4000)
set @l_xml_str = cast(@l_xml as nvarchar(4000))
set @l_xml_str = replace(@l_xml_str , '_TMP_', @l_node);
set @l_xml = cast(@l_xml_str as xml);

Коряво и опасно - понимаю, но лучше ничего не придумал. Буду рад, елси предложите другие варианты.

P.S. daw - Вы про такой же вариант имели ввиду?
14 фев 11, 13:18    [10231777]     Ответить | Цитировать Сообщить модератору
 Re: Как в xml.value первый параметр задать с переменной?  [new]
daw
Member

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

> P.S. daw - Вы про такой же вариант имели ввиду?

такой еще способ есть
http://blogs.msdn.com/b/denisruc/archive/2006/05/17/600250.aspx

Posted via ActualForum NNTP Server 1.4

14 фев 11, 14:05    [10232271]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как в xml.value первый параметр задать с переменной?  [new]
Sergij Gromov
Member

Откуда: 49°49'44.58"N, 23°59'40.42"E
Сообщений: 443
daw,

У меня ещё вопрос по теме ...

в квадратных скобках указывается число
[1]
что соответствует первому найденому значению.
Мне надо в цикле перебрать все наявные в файле, как ТУДА переменную поместить ?
9 окт 12, 12:27    [13289574]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить