Я считаю, что самый простой способ сделать это - восстановить XML с помощью оператора SELECT с использованием CROSS APPLY и FOR XML.
Вот пример, надеюсь, это имеет смысл.При таком подходе вы также можете присоединиться к другой таблице для данных, которые вы хотите вставить в узел <child2 />
, что делает это решение достаточно гибким.
DECLARE @t TABLE ( Document XML )
INSERT INTO @t
SELECT '<root><parent><child1>first row data</child1></parent><parent><child1>second row data</child1></parent></root>'
SELECT
ref.value('child1[1]', 'varchar(max)') as child1,
'something to insert' as child2
FROM @t CROSS APPLY Document.nodes('//parent') R(ref)
FOR XML PATH('parent'), ROOT('root')
Результаты
<root>
<parent>
<child1>first row data</child1>
<child2>something to insert</child2>
</parent>
<parent>
<child1>second row data</child1>
<child2>something to insert</child2>
</parent>
</root>