Simplifier ce que je fais un peu, comme un exemple, disons que je les tableaux suivants:Comment utiliser les valeurs de colonne en tant que noms d'éléments XML à l'aide de xml dans SQL Server 2005?
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)
qui définit simplement une table des noms d'éléments qui pourraient être dynamiques, contre laquelle sont définies une table de valeurs. Ce que je voudrais, c'est générer du XML sous la forme suivante, où les valeurs de la table @elements deviennent les noms des éléments, et les valeurs de la table @values deviennent les valeurs.
<Customer>
<FirstName>XXX</FirstName>
<Surname>YYY</Surname>
<Address>ZZZ<Address>
</Customer>
Cependant mes efforts avec for xml
à ce jour ne vont pas si bien:
select e.name, v.value from @elements e
inner join @values v on v.elementId = e.id
for xml path(''), root('customer')
retours
<customer>
<name>FirstName</name>
<value>XXX</value>
<name>Surname</name>
<value>YYY</value>
<name>Address</name>
<value>ZZZ</value>
</customer>
for xml auto
retours
<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
retours
<customer>
<row name="FirstName" value="XXX" />
<row name="Surname" value="YYY" />
<row name="Address" value="ZZZ" />
</customer>
Est-il possible que je peux obtenir les valeurs d'une colonne à la sortie en tant que noms d'éléments? Je suis sûr qu'il me manque quelque chose de simple ici.
Je ne pense pas que vous pouvez le faire. Vous pouvez faire beaucoup avec les différentes commandes FOR XML - mais dans tous les cas, les noms des éléments XML et/ou des attributs résultants doivent être corrigés, par ex. tapé par vous. Je ne connais pas de moyen d'obtenir ceux d'être tiré à partir d'une table et dynamique assigné –