2012-03-13 10 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

ないSQLサーバーのXQueryと家族次のエラーを取得するが、不思議助けることができなかった:考えない 'クエリ(CONCAT( '/ X /'、@para)) '仕事? – grtjn

+0

@grtjn、SQLサーバーのクエリの正しい構文は '@ x.query( 'concat("/x/"、sql:variable(" @ para ")))'です。しかし、 '/ x/b'の文字列だけを返します。 – 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")]'); 
関連する問題