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 XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<root>
  <id>1</id>
  <id>2</id>
  <id>3</id>
</root>

Initialement, j'avais fait cela :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 XML : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?