2014-02-17 27 views
7

我在SQL下面的代碼:返回受SQL事務總行

SET XACT_ABORT ON 
Begin Transaction 
INSERT INTO TABLE_A VALUES(/*Some Values*/) 
INSERT INTO TABLE_B VALUES(/*Some Values*/) 
INSERT INTO TABLE_C VALUES(/*Some Values*/) 

Update Table Set Values A = A WHERE id = @id /* Some thing like that*/ 
Commit Transaction 

所以,我只是想知道在插入和Updte聲明

我的事務塊受行的總數

回答

9

您可以使用@@ROWCOUNT變量

要獲得插入+更新的所有受影響行,在其聲明一個變量,商店行數的值。

DECLARE @totalRows INT 
SET @totalRows = 0 
INSERT INTO TABLE_A VALUES(/*Some Values*/) 
SET @totalRows [email protected] + @@ROWCOUNT 

INSERT INTO TABLE_B VALUES(/*Some Values*/) 
SET @totalRows [email protected] + @@ROWCOUNT 

INSERT INTO TABLE_C VALUES(/*Some Values*/) 
SET @totalRows [email protected] + @@ROWCOUNT 

Update Table Set Values A = A WHERE id = @id /* Some thing like that*/ 
SET @totalRows [email protected] + @@ROWCOUNT 

SELECT @totalRows As TotalRowsAffected 
+0

將它返回所有受影響的行,'喜歡3個插入+ update' – HarshSharma

+0

沒有,@@行數只返回前一個語句行數的所有受影響行。聲明局部變量,並在DML語句將@@ rowcount值複製到局部變量並添加後立即聲明。 –

+0

很酷,我還編輯了答案,我可以接受它知道 – HarshSharma