我正在尝试将一个值传递给 xml.nodes 以便我可以泛化:
DECLARE @xml xml =
'
<root>
<level1>
<sublevel1>
<val>this is a value</val>
<val>this is also a value</val>
</sublevel1>
</level1>
</root>
'
declare @xmlPath nvarchar(250) = '/root/level1/sublevel1'
Select @xmlPath as [path], t.c.query('.') as data
from @xml.nodes ('/root/level1/sublevel1') as t(c) --this line find the nodes
--from @xml.nodes ('*[local-name()=sql:variable("@xmlPath")]') as t(c) --This one doesn't
当我尝试传入变量
.Nodes(@xmlPath)
或连接路径并且 Nodes() 函数需要字符串文字时,我得到了这个可能的解决方案。
<sublevel1>
<val>this is a value</val>
<val>this is also a value</val>
</sublevel1>
我没有收到任何错误,但是当我运行它时也没有返回任何数据。