Puede especificar una cláusula OUTPUT en su declaración MERGE y obtener un informe de salida de lo que se ha hecho durante 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'
;
Esto le dará una fila para cada "acción" (insertar, actualizar, eliminar) para cada operación. Si se trata de muchas declaraciones, también puede SALIR EN @tableVar y luego mirar la variable de la tabla.
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
Consulte los Libros en línea para obtener detalles sobre MERGE y la cláusula OUTPUT .
Marc