简化我在干什么一些,作为一个例子,说我有如下表:如何在SQL Server 2005中使用列值作为xml元素名称?
declare @elements table (id int, name nvarchar(20))
insert into @elements (id, name) values (1, 'FirstName')
insert into @elements (id, name) values (2, 'Surname')
insert into @elements (id, name) values (3, 'Address')
declare @values table (id int, value nvarchar(20), elementId int)
insert into @values (id, value, elementId) values (1, 'XXX', 1)
insert into @values (id, value, elementId) values (2, 'YYY', 2)
insert into @values (id, value, elementId) values (3, 'ZZZ', 3)
这只是定义可以是动态的,针对其定义值表元素名称的表格。
我想要的是以下面的形式生成XML,其中@elements表的值成为元素名称,并且@values表的值成为值。
<Customer>
<FirstName>XXX</FirstName>
<Surname>YYY</Surname>
<Address>ZZZ<Address>
</Customer>
但是我有for xml
努力至今都不会那么好:
select e.name, v.value from @elements e
inner join @values v on v.elementId = e.id
for xml path(''), root('customer')
回报
<customer>
<name>FirstName</name>
<value>XXX</value>
<name>Surname</name>
<value>YYY</value>
<name>Address</name>
<value>ZZZ</value>
</customer>
for xml auto
回报
<customer>
<e name="FirstName">
<v value="XXX" />
</e>
<e name="Surname">
<v value="YYY" />
</e>
<e name="Address">
<v value="ZZZ" />
</e>
</customer>
for xml raw
返回
有没有一种方法,我可以从列中获取值作为元素名称输出?我确定我在这里错过了一些显然很简单的事情。
我不认为你可以做到这一点。您可以使用各种FOR XML命令做很多事情 - 但是在任何情况下,生成的XML元素和/或属性的名称都需要固定,例如,由您键入。我不知道有什么方法可以将这些从表格中拉出来并动态分配 – 2010-07-13 19:09:08