Я получаю данные XML в своей хранимой процедуре и хочу обновить соответствующую таблицу SQL Server путем сопоставления значений.
Это пример кода XML:
DECLARE @xmlData XML = '<NewDataSet>
<Table>
<SystemKey>India</SystemKey>
<Translation>Bharat</Translation>
</Table>
<Table>
<SystemKey>UAE</SystemKey>
<Translation>United Arab Emirates</Translation>
</Table>
<Table>
<SystemKey>Afghanistan</SystemKey>
<Translation>Afghanistan</Translation>
</Table>
</NewDataSet>'
:
SELECT
t.c.value('(SystemKey/text())[1]', 'NVARCHAR(MAX)') AS [SystemKey],
r.c.value('text()[1]', 'NVARCHAR(MAX)') AS Translation
FROM
@xmldata.nodes('NewDataSet/Table') AS t(c)
CROSS APPLY
t.c.nodes('*[local-name(.) != "SystemKey"]') AS r(c)
Я хочу обновить таблицу 2, указав значения из XML данные; например. SystemKey = Table2.KEY AND Translation = Table2.Translation.
Могу ли я сделать это напрямую без временной таблицы и курсора?