Du kan specificera en OUTPUT-klausul på din MERGE-sats och få en utdatarapport över vad som har gjorts under 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'
;
Detta ger dig en rad för varje "åtgärd" (infoga, uppdatera, ta bort) för varje operation. Om det är många påståenden, kan du också UTMATNING INTO @tableVar och sedan titta på tabellvariabeln.
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
Kolla in Books Online för mer information om SAMMANSLUTNING uttalande och OUTPUT-klausulen .
Marc