无法将变量传递给 SQL 中的 xml.Nodes() 中的 sql:variable() 函数

问题描述 投票:0回答:0

我正在尝试将一个值传递给 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>

我没有收到任何错误,但是当我运行它时也没有返回任何数据。

sql sql-server xml xml-parsing
© www.soinside.com 2019 - 2024. All rights reserved.