V příkazu MERGE můžete zadat klauzuli OUTPUT a získat výstupní zprávu o tom, co bylo provedeno během 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'
;
Tím získáte řádek pro každou "akci" (vložení, aktualizaci, odstranění) pro každou operaci. Pokud je to mnoho příkazů, můžete také OUTPUT INTO @tableVar a pak se podívat na proměnnou tabulky.
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
Podívejte se na Books Online, kde najdete podrobnosti o MERGE prohlášení a klauzule OUTPUT .
Marc