T-SQL动态XQuery

本演示,是把这篇:http://www.cnblogs.com/insus/archive/2012/02/29/2374826.html 改为动态的T-SQL。

宣告三个变量,第一个为@nodes :

 DECLARE @nodes NVARCHAR(MAX= '''/Devs/lang/@name'''

 

第二个为@value:

DECLARE @value NVARCHAR(MAX= '''(.)'',''NVARCHAR(MAX)'''

 

第三个为@sql,其实前两个变量也是为此变量所使用,查询LIKE的条件,本例中,也有所改变,即是查询所有值包含有".NET"。:

DECLARE @sql NVARCHAR(MAX= 'SELECT 
    lang = L.n.value(
' + @value +')
 FROM @xml.nodes(
' + @nodes +') L(n)
 WHERE L.n.value(
' + @value +') LIKE ''%.NET%'''

 

使用sp_executesql 执行第三个变量:

EXECUTE sp_executesql @sql, N'@xml xml'@xml = @xml

 

Exec执行得到的结果:

 

 

posted @ 2012-03-03 14:52  Insus.NET  阅读(465)  评论(0)    收藏  举报