基本的には、XMLをループして、結果セットに基づいてクエリを記述する必要があります。
これを試してみてください:
declare @i int;
declare @x xml;
------
SELECT @x = N'
<tables>
<table name="tableName1">
</table>
<table name="tableName2">
</table>
';
exec sp_xml_preparedocument @i output, @x
select ID, col1, col2
from OpenXml(@i, '/tables/table/row')
with (ID int, col1 nvarchar(30), col2 nvarchar(30))
exec sp_xml_removedocument @i
データを挿入するために必要な列のリストが表示されます(1つ前のレベルでテーブル名を取得できます)
34 data dom
35 data2 dom2
1 data dom
3 data2 dom2
7 data4 NULL
次に実行する必要があるのは、この結果セットでループしているステートメントを書くことです。
参考までに、XMLを書く必要はありません。このようなファイルから読むことができます:
SELECT @x = xCol.BulkColumn FROM OPENROWSET (BULK 'c:\Update.xml', SINGLE_BLOB) AS xCol;