在我做了一些互联网研究之后,我发现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)
我能做些什么来让节点函数接受一个变量作为参数???
答案 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。