@@ROWCOUNT poda liczbę wierszy, na które ma wpływ ostatni SQL, najlepiej jest przechwycić ją do zmiennej lokalnej następującej po poleceniu, o którym mowa, ponieważ jej wartość zmieni się następnym razem, gdy na nią spojrzysz:
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]
WYJŚCIE:
(2 row(s) affected)
Rows ROWCOUNT
----------- -----------
2 1
(1 row(s) affected)
otrzymasz Rows
wartość 2, liczba wstawionych wierszy, ale ROWCOUNT wynosi 1, ponieważ SELECT @[email protected]@ROWCOUNT
polecenie dotyczy 1 wiersza
jeśli masz wiele WSTAWEK lub AKTUALIZACJI itp. w swojej transakcji, musisz określić, w jaki sposób chcesz „liczyć” to, co się dzieje. Możesz mieć osobną sumę dla każdej tabeli, pojedynczą sumę całkowitą lub coś zupełnie innego. Musisz ZADEKLAROWAĆ zmienną dla każdej sumy, którą chcesz śledzić i dodać do niej po każdej operacji, która ma do niej zastosowanie:
--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