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 ?
Partager