W SQL Server możesz użyć @@ROWCOUNT
funkcja systemowa do zwrócenia liczby wierszy, na które miała wpływ ostatnia instrukcja T-SQL.
Na przykład, jeśli zapytanie zwraca 4 wiersze, @@ROWCOUNT
zwróci 4.
Przykład 1 – Wybór danych
Oto podstawowy przykład pokazujący, jak to działa.
SELECT * FROM Dogs;
SELECT @@ROWCOUNT;
Wynik:
+---------+-----------+-----------+ | DogId | DogName | GoodDog | |---------+-----------+-----------| | 1 | Fetch | 0 | | 2 | Fluffy | 0 | | 3 | Wag | 0 | +---------+-----------+-----------+ (3 rows affected) +--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+ (1 row affected)
W tym przypadku mój SELECT
instrukcja zwróciła 3 wiersze, więc @@ROWCOUNT
zwrócono 3.
Przykład 2 – Aktualizacja danych
Oto przykład użycia @@ROWCOUNT
z UPDATE
oświadczenie, aby sprawdzić, czy jakiekolwiek wiersze zostały zaktualizowane.
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
Wynik:
(0 rows affected) A dog outside the system cannot be a good dog
W tym przypadku żadne wiersze nie zostały zaktualizowane, ponieważ identyfikator DogId nie istniał w tabeli. Udało nam się użyć @@ROWCOUNT
z IF
oświadczenie, aby zwrócić użytkownikowi odpowiednią wiadomość.
I znowu, ale tym razem pies istnieje.
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 1
IF @@ROWCOUNT > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
Wynik:
(1 row affected) Your dog will be rewarded accordingly
Bardzo duży zbiór danych?
Jeśli uważasz, że liczba wierszy, których dotyczy instrukcja, będzie większa niż 2 miliardy, użyj ROWCOUNT_BIG()
zamiast tego.
Możesz go używać w taki sam sposób, jak @@ROWCOUNT
jest używany.
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 4
IF ROWCOUNT_BIG() > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
Wynik:
(0 rows affected) A dog outside the system cannot be a good dog
Kiedy @@ROWCOUNT
jest zresetowany
Instrukcje takie jak USE
, USTAW
COFNIJ PRZYDZIELENIE KURSORA
, ZAMKNIJ KURSORA
, DRUKUJ
, RAISERROR
, ROZPOCZNIJ TRANSAKCJĘ
lub POTWIERDZENIE TRANSAKCJI
zresetuj @@ROWCOUNT
wartość do 0
.
Uruchamianie SELECT @@ROWCOUNT
sam zwróci również 0
.