Bạn có thể chỉ định một mệnh đề OUTPUT trên câu lệnh MERGE của mình và nhận được một báo cáo đầu ra về những gì đã được thực hiện trong 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'
;
Điều này sẽ cung cấp cho bạn một hàng cho mỗi "hành động" (chèn, cập nhật, xóa) cho mỗi hoạt động. Nếu đó là nhiều câu lệnh, bạn cũng có thể ĐẦU RA VÀO @tableVar và sau đó xem biến bảng.
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
Xem Sách Trực tuyến để biết chi tiết về MERGE tuyên bố và mệnh đề OUTPUT .
Marc