@@ROWCOUNT gibt die Anzahl der vom letzten betroffenen Zeilen an SQL-Anweisung ist es am besten, sie nach dem betreffenden Befehl in einer lokalen Variablen zu erfassen, da sich ihr Wert ändert, wenn Sie sie sich das nächste Mal ansehen:
DECLARE @Rows int
DECLARE @TestTable table (col1 int, col2 int)
INSERT INTO @TestTable (col1, col2) select 1,2 union select 3,4
SELECT @[email protected]@ROWCOUNT
SELECT @Rows AS Rows,@@ROWCOUNT AS [ROWCOUNT]
AUSGABE:
(2 row(s) affected)
Rows ROWCOUNT
----------- -----------
2 1
(1 row(s) affected)
Sie erhalten Rows
Wert 2, die Anzahl der eingefügten Zeilen, aber ROWCOUNT ist 1, weil SELECT @[email protected]@ROWCOUNT
Befehl betraf 1 Zeile
Wenn Sie mehrere INSERTs oder UPDATEs usw. in Ihrer Transaktion haben, müssen Sie bestimmen, wie Sie "zählen" möchten, was vor sich geht. Sie können für jede Tabelle eine separate Summe, einen einzelnen Gesamtsummenwert oder etwas völlig anderes haben. Sie müssen für jede Summe, die Sie nachverfolgen möchten, eine Variable DECLARE und ihr nach jeder Operation hinzufügen, die darauf zutrifft:
--note there is no error handling here, as this is a simple example
DECLARE @AppleTotal int
DECLARE @PeachTotal int
SELECT @AppleTotal=0,@PeachTotal=0
BEGIN TRANSACTION
INSERT INTO Apple (col1, col2) Select col1,col2 from xyz where ...
SET @[email protected][email protected]@ROWCOUNT
INSERT INTO Apple (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT
INSERT INTO Peach (col1, col2) Select col1,col2 from xyz where ...
SET @[email protected][email protected]@ROWCOUNT
INSERT INTO Peach (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT
COMMIT
SELECT @AppleTotal AS AppleTotal, @PeachTotal AS PeachTotal