传递SQL参数值以选择xml数据

时间:2014-07-03 09:07:38

标签: sql xml

代码:

DECLARE @dataxml XML = CONVERT(xml ,'<Parentnode><childnode><id>1</id></childnode></Parentnode>')

DECLARE @childnode  VARCHAR(50) 
SET @childnode = (SELECT DISTINCT 
                      r.value('fn:local-name(.)', 'nvarchar(50)') as t 
                  FROM @dataxml.nodes('//Parentnode/*') AS records(r))

SELECT @childnode

SELECT
   t.value('id[1]', 'int') AS id 
FROM
   @dataxml.nodes('/Parentnode/*[local-name(.)=sql:variable("@childnode")]/*') AS XD(t)

输出返回为NULL,但它应带有xml

中的id值

此代码中有什么问题?

1 个答案:

答案 0 :(得分:1)

您只需删除最后一行末尾的/*个字符,如下所示:

@dataxml.nodes('/Parentnode/*[local-name(.)=sql:variable("@childnode")]') AS XD(t)

此外,我必须删除$关键字末尾的FROM字符,但我猜这可能只是一个错字。我测试的是SQL Server 2012。