@@ROWCOUNT fornirà il numero di righe interessate dall'ultima SQL, è meglio acquisirlo in una variabile locale seguendo il comando in questione, poiché il suo valore cambierà la prossima volta che lo guarderai:
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]
USCITA:
(2 row(s) affected)
Rows ROWCOUNT
----------- -----------
2 1
(1 row(s) affected)
ottieni Rows
valore di 2, il numero di righe inserite, ma ROWCOUNT è 1 perché SELECT @[email protected]@ROWCOUNT
comando interessato 1 riga
se hai più INSERT o AGGIORNAMENTI, ecc. nella tua transazione, devi determinare come vorresti "contare" cosa sta succedendo. Potresti avere un totale separato per ogni tabella, un unico valore totale generale o qualcosa di completamente diverso. Dovrai DICHIARARE una variabile per ogni totale che desideri monitorare e aggiungervi dopo ogni operazione ad essa applicabile:
--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