set @xml = '
<body>
<Record>
<A>a</A>
<B>b</B>
<C>c</C>
</Record>
<Record>
<A>d</A>
<B>e</B>
<C>f</C>
</Record>
<Record>
<A>g</A>
<B>h</B>
<C>i</C>
</Record>
</body>
'
я пытаюсь использовать этот синтаксис, но не работаетс помощью переменной в XPath для XQuery (значение)
я хотел бы использовать переменную с XPath в XQuery (значение)
SET @xmlQuery = '/Record[2]/A'
set @nodevalue = (@xml.value('(//*[local-name()=sql:variable("@xmlQuery")])/text())[1]', 'nvarchar(50)'))
что не так?
... это что-то вроде бастардировки Microsoft XQuery, а не реального/законного языка, определенного стандартом? (Если вы задаете вопросы, зависящие от конкретной реализации поставщика, пожалуйста, отметьте соответствующим образом). –
... Я имею в виду, что переменные XQuery имеют такие имена, как '$ foo', а не' @ foo', а синтаксис для определения переменной использует 'declare', а не' set' и 'nvarchar' - недействительные данные типа там. То есть - это совсем не похоже на XQuery. –
в действительности значение @xmlQuery происходит из таблицы. Короче говоря, я бы получил значение, используя переменную, если возможно, вместо использования литеральной строки, я знаю, что ее можно было бы достичь с помощью динамического sql, но я не знаю, как назначить значение, исходящее из exec sp_executesql. см. http://stackoverflow.com/questions/39399317/save-result-of-exec-sp-excutequery-using-xpath – zanza67