Можете да укажете клауза OUTPUT във вашия оператор MERGE и да получите изходен отчет за това, което е направено по време на MERGE.
MERGE (targetTable) AS t
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
(some statements)
WHEN NOT MATCHED THEN
(some statements)
OUTPUT
$action, inserted.ID 'inserted', deleted.ID 'deleted'
;
Това ще ви даде ред за всяко „действие“ (вмъкване, актуализиране, изтриване) за всяка операция. Ако има много изрази, можете също да ИЗВЕДЕТЕ В @tableVar и след това да погледнете променливата на таблицата.
DECLARE @tableVar TABLE (MergeAction VARCHAR(20), InsertedID INT, DeletedID INT)
MERGE (targetTable) AS t
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
(some statements)
WHEN NOT MATCHED THEN
(some statements)
OUTPUT
$action, inserted.ID 'inserted', deleted.ID 'deleted' INTO @tableVar
;
SELECT MergeAction, COUNT(*)
FROM @tableVar
GROUP BY MergeAction
Разгледайте онлайн книгите за подробности относно ОБЛИВАНЕ оператор и клауза OUTPUT .
Марк