我想在SQL Server 2008 R2中编写一个标量值函数,它将采用一块XML和一个XQuery路径,并将结果作为字符串返回。查看仅用于执行XML XQuery的T-SQL,以下示例显示了两条语句(1 & 2)。第一个应该显然工作,但没有。第二个是同样的事情,但没有使用sql:variable()
。SQL XML查询()使用sql:变量不起作用
declare @xml xml
set @xml = '<?xml version="1.0" encoding="UTF-8"?>
<Response version="1.0">
<Transaction>
<Processing>
<Return>Some text that I need to extract.</Return>
</Processing>
</Transaction>
</Response>'
declare @xquery varchar(100)
set @xquery = '/Response/Transaction/Processing/Return'
-- Statement 1 : This should work, but it doesn't
select
CAST(@xml.query('data(*[local-name(.) = sql:variable("@xquery")])') as varchar(max))
-- Statement 2 : This does work
select
CAST(@xml.query('data(/Response/Transaction/Processing/Return)') as varchar(max))
有谁能告诉我为什么这不起作用吗?我做错了什么,如果确实是可能的话?
我已经看过这个在这个网站上的许多假设的工作示例,这是我如何到达上述代码,但我无法弄清楚为什么我的实现不工作。
本地名不包含路径('选择CAST(@ xml.query(“数据(// * [ local-name(。)=“Return”])')as varchar(max))'在你的例子中工作...) –
对不起马特,但我不明白你的答复,可能是因为我以前没有在SQL中做过很多XML的东西。你能否扩展你的答案? –