2012-03-13 2 views
4

Я пытаюсь реализовать следующий код.XQuery/XPath использует параметр sql?

declare @para varchar(10) = 'b'; 
declare @x xml = ' 
<x> 
    <a>1111</a> 
    <b>2222</b> 
    <c>3333</c> 
</x>'; 
select @x.query('/x/sql:variable("@para")'); 

Приведенный выше код должен получить узел <b>2222</b>. Тем не менее, получить следующее сообщение об ошибке

 
Msg 9335, Level 16, State 1, Line 8 
XQuery [query()]: The XQuery syntax '/function()' is not supported. 
+0

Не семейный с XQuery в SQL-сервер, но не может помочь интересно: будет не 'запроса (CONCAT ('/ х /', @para)) 'работа? – grtjn

+0

@grtjn, правильный синтаксис запроса на SQL-сервере - '@ x.query ('concat ("/x/", sql: variable (" @ para "))')'. Однако он вернет строку '/ x/b'only. – ca9163d9

+0

Thnx, узнал что-то новое .. – grtjn

ответ

8
declare @para varchar(10) = 'b'; 
declare @x xml = ' 
<x> 
    <a>1111</a> 
    <b>2222</b> 
    <c>3333</c> 
</x>'; 
select @x.query('/x/*[local-name()=sql:variable("@para")]'); 
Смежные вопросы