XML : modify et insertion de plusieurs éléments
Bonjour,
Question d'ordre technique sur la modification d'une colonne XML via l'insertion d'éléments. Est-il possible d'insérer plusieurs éléments en une fois, sachant que les éléments sont issu du résultat d'une requête.
En gros, j'ai un élément <root/>, une requête qui me retourne 1, 2 et 3, et je souhaite avoir quelque chose du style :
Code:
1 2 3 4 5 6
|
<root>
<id>1</id>
<id>2</id>
<id>3</id>
</root> |
Initialement, j'avais fait cela :
Code:
1 2 3 4 5 6 7 8 9 10 11
| DECLARE @Xml XML = '<root/>';
DECLARE @Table TABLE(id INT);
DECLARE @TableX TABLE(x XML);
INSERT INTO @Table (id) VALUES (1), (2), (3);
INSERT INTO @TableX (x) VALUES (@Xml);
UPDATE @TableX SET x.modify('insert <id>{sql:column("id")}</id> into (/root)[1]')
FROM @TableX, @Table;
SELECT * FROM @TableX; |
Mais cela ne fonctionne bien entendu pas (sinon, je ne serais pas là à poser la question !). Cela ne m'insère qu'un seul élément
Code:
1 2 3 4
|
<root>
<id>1</id>
</root> |
Pour contourner le problème, je vais utiliser une requête SQL avec un FOR XML PATH. Mais pour ma culture perso, est-il possible d'arriver à cela en n'utilisant que modify ?