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

Откуда: Москва
Сообщений: 1052
Как указать путь в @xml.nodes переменной?

Делаю так, получаю пустой селект. Хотя если вместо переменной поставить значение, то все ок.
DECLARE @BasketXml	XML,
		@path		VARCHAR

SET @BasketXml = '<?xml version="1.0" ?>
					<tns:basket xmlns:tns="http://mds.nyxdata.com/vrxml/2009/1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mds.nyxdata.com/vrxml/2009/1.2 http://mds.nyxdata.com/vrxml/2009/1.2/VRXML_1.2_beta.xsd" tns:customerId="12345">
						<tns:item tns:productId="a123" tns:quantity="1"/>
						<tns:item tns:productId="b456" tns:quantity="3"/>
						<tns:item tns:productId="c789" tns:quantity="2"/>
					</tns:basket>'
					
SET @path = '/p:basket/p:item'					

;WITH XMLNAMESPACES('http://mds.nyxdata.com/vrxml/2009/1.2' AS p)					
SELECT	Rows.n.value('@p:productId', 'varchar(20)'),
		Rows.n.value('@p:quantity', 'int'),
		Rows.n.value('../@p:customerId', 'int')
FROM @BasketXml.nodes('/*[local-name(.)=sql:variable("@path")]') Rows(n)
11 июл 13, 09:08    [14550291]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
Hel975,

FROM @BasketXml.nodes('//p:basket/p:item') Rows(n)
?
11 июл 13, 09:13    [14550309]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
Ennor Tiegael,

Мне наоборот надо, чтобы путь был в переменной и при этом все работало.
11 июл 13, 10:33    [14550750]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
Hel975,

Dynamic SQL.
11 июл 13, 10:40    [14550789]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
Ennor Tiegael,

Это очевидно. А другой способ есть?
11 июл 13, 11:06    [14550975]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
Hel975,

Любой другой способ, очевидно, явно запрещен документацией:
http://msdn.microsoft.com/en-us/library/ms188282.aspx
XQuery
Is a string literal, an XQuery expression.
11 июл 13, 11:12    [14551018]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Hel975,

Не надо применять вещи не по назначению. XML на скуле это так - на крайний случай, а в основном всё должно быть реляционно.
Обработку XML лучше вообще делать на клиенте/апликешн-сервере. Полностью.

XML это протокол передачи данных. А у скуля другой формат.

MS даже всякие пройвадеры делает чтобы XML до скуля не доходил.

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

А впендёрить кубик в круглое отверстие каждый может. Некоторые этим только и занимаются.
11 июл 13, 13:14    [14551992]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
Mnior,

В данном случае, я архитектурой не занимаюсь. Мне сказали, копать, я и копаю.
11 июл 13, 13:42    [14552226]     Ответить | Цитировать Сообщить модератору
 Re: Как указать путь в @xml.nodes переменной  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Hel975,
Ага, от забора и до следующего дуба.
Судя по всему никто ею не занимается.
Ну остаётся вам пожелать только удачи.
11 июл 13, 14:56    [14552814]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить