U kunt een OUTPUT-clausule op uw MERGE-instructie opgeven en een uitvoerrapport krijgen van wat er tijdens MERGE is gedaan.
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'
;
Dit geeft u een rij voor elke "actie" (invoegen, bijwerken, verwijderen) voor elke bewerking. Als het veel statements zijn, kun je ook OUTPUT INTO @tableVar en dan naar de tabelvariabele kijken.
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
Bekijk de Books Online voor details over de MERGE statement en de OUTPUT-clausule .
Marc