我已经扫描了一些来自不同博客的示例和评论,虽然我已经看到很多使用sql:variable来选择某些节点/属性的例子,但我不确定像节点选择这样简单的东西可以替换为一个SQL变量。例如,如果我有以下内容:
declare @NodeStartPoint varchar(255) = '/root/parent/child'
以后,我可能会使用交叉应用类似的东西:
cross apply MyXml.nodes(@NodeStartPoint)
显然上面的交叉应用节点选择不起作用。我也尝试过:
cross apply MyXml.nodes('sql:variable(@NodeStartPoint)')
也可能是其他一些奇怪的组合!
我的想法是,我可以从param等传递节点选择。
我已经开始浏览http://blogs.msdn.com/b/mrys/和http://msdn.microsoft.com/en-us/library/ms186960%28SQL.90%29.aspx,但到目前为止,我找不到任何我想要实现的例子,这让我觉得我正在咆哮错误的树! :)
任何想法都感激不尽!!
答案 0 :(得分:2)
好吧,考虑到我在互联网上看到类似问题的回复类型,回答我自己的问题。这一回事非常相似:Passing an argument to the T-SQL Nodes method (XML CROSS APPLY)
所以,我猜测在nodes()语句中使用变量替换不能完成它。