簡化我在幹什麼一些,作爲一個例子,說我有如下表:如何在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