Sql Server将变量传递给节点函数

时间:2015-06-22 15:01:35

标签: sql sql-server xml-parsing

在我做了一些互联网研究之后,我发现Sql Server的xml处理的节点函数不接受变量作为参数。如果我尝试使用变量a得到以下错误:

  

XML数据类型方法“nodes”的参数1必须是字符串文字。

这就是我想要做的事情:

SET @xPath = REPLACE(@xPath,'|','/')
SET @xPath = '/' + @xPath + '/text()'
SELECT @ParsedHtml = @ParsedHtml + CONVERT(nvarchar(max),Col.query('.')) + ';' FROM @Html.nodes(@xPath)AS T(Col)

我能做些什么来让节点函数接受一个变量作为参数???

1 个答案:

答案 0 :(得分:0)

您可以在路径中使用如下变量:

SET @xPath = REPLACE(@xPath,'|','/')

set @ParsedHtml = ''
SELECT @ParsedHtml = @ParsedHtml + CONVERT(nvarchar(max),Col.query('.')) + ';' 
FROM @Html.nodes('/*[local-name()=sql:variable("@xPath")]/text()')AS T(Col)

我不认为你可以在路径中的一个变量中做多个级别,看起来你正在尝试这样做。您必须使用自己的参数指定每个级别。如果您需要执行动态数量的路径级别,可以考虑使用dynamic sql