2014-02-17 5 views
7

Ich habe den folgenden Code in SQL:Liefert die Summe der Zeilen von SQL Transaktion betroffen

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 

Also, i die Gesamtzahl der betroffenen Zeilen von meiner Transaktion Block einfügen und Updte Aussage nur wissen wollte

Antwort

9

können Sie verwenden @@ROWCOUNT Variable

Um Einsätze + alle betroffenen Zeilen zu aktualisieren, deklarieren Sie eine Variable und speichern rowcount Werte in es.

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

wird es alle betroffenen Zeilen zurück, 'wie 3 Einsätze + alle betroffenen Reihen von update' – HarshSharma

+0

Nein, @@ rowcount nur gibt die Anzahl der Zeilen aus früheren Aussage. deklarieren Sie lokale Variablen und kopieren Sie unmittelbar nach DML-Anweisungen den @@ rowcount-Wert in die lokale Variable und fügen Sie sie hinzu. –

+0

cool, ich habe auch die Antwort bearbeitet, ich kann es akzeptieren wissen – HarshSharma

Verwandte Themen