Możesz określić klauzulę OUTPUT w instrukcji MERGE i uzyskać raport wyjściowy o tym, co zostało zrobione podczas 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'
;
To da ci wiersz dla każdej "akcji" (wstaw, zaktualizuj, usuń) dla każdej operacji. Jeśli jest dużo instrukcji, możesz również WYJŚĆ DO @tableVar, a następnie spojrzeć na zmienną tabeli.
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
Sprawdź Books Online, aby uzyskać szczegółowe informacje na temat MERGE oświadczenie i klauzula OUTPUT .
Marek