如何使用SQL Server 2008在每个XML节点中设置参数?
我是SQL的新手,我有像这样的XML数据
Set @xml='<root><name>John </name><age>8</age></root>'
我需要在参数中设置节点<name>
,<age>
的值。例如:
Set @name='get value of node <name>'
Set @age='the value of <age>'
这可能吗?谢谢!
答案 0 :(得分:2)
如果我得到正确的结果,您将在XML中获取参数 key-value-pairs 。您尝试实现的是将值读入拟合变量。试试这样:
DECLARE @xml XML;
SET @xml='<root><name>John </name><age>8</age></root>';
DECLARE @name NVARCHAR(100);
DECLARE @age INT;
SET @name=@xml.value('(/root/name)[1]','nvarchar(max)');
SET @age =@xml.value('(/root/age)[1]','int');
SELECT @name,@age;
如果您需要查询变量名称中的值,可以使用:
DECLARE @nodeName NVARCHAR(100)='name';
SET @name=@xml.value('(/root/*[local-name()=sql:variable("@nodeName")])[1]','nvarchar(max)');
中心思想是使用XQuery
- 表达式(/root/*[local-name()=sql:variable("@nodeName")])[1]
来选择第一个节点的值,其中元素的名称就像给定的参数< / em>