I SQL Server kan du använda @@ROWCOUNT
systemfunktion för att returnera antalet rader som påverkas av den senaste T-SQL-satsen.
Till exempel, om en fråga returnerar 4 rader, @@ROWCOUNT
kommer att returnera 4.
Exempel 1 – Välja data
Här är ett grundläggande exempel för att visa hur det fungerar.
SELECT * FROM Dogs;
SELECT @@ROWCOUNT;
Resultat:
+---------+-----------+-----------+ | DogId | DogName | GoodDog | |---------+-----------+-----------| | 1 | Fetch | 0 | | 2 | Fluffy | 0 | | 3 | Wag | 0 | +---------+-----------+-----------+ (3 rows affected) +--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+ (1 row affected)
I det här fallet, min SELECT
satsen returnerade 3 rader, och så @@ROWCOUNT
returnerade 3.
Exempel 2 – Uppdatera data
Här är ett exempel på hur du använder @@ROWCOUNT
med en UPPDATERING
uttalande för att testa om några rader uppdaterades eller inte.
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
Resultat:
(0 rows affected) A dog outside the system cannot be a good dog
I det här fallet uppdaterades inga rader eftersom DogId inte fanns i tabellen. Vi kunde använda @@ROWCOUNT
med en IF
uttalande för att returnera ett lämpligt meddelande till användaren.
Här är den igen, men den här gången finns hunden.
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
Resultat:
(1 row affected) Your dog will be rewarded accordingly
Extremt stor datauppsättning?
Om du tror att antalet rader som påverkas av ett uttalande kommer att vara mer än 2 miljarder, använd ROWCOUNT_BIG()
istället.
Du kan använda det på samma sätt som @@ROWCOUNT
används.
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
Resultat:
(0 rows affected) A dog outside the system cannot be a good dog
När @@ROWCOUNT
är återställt
Påståenden som ANVÄND
, SET
DEALLOCATE CURSOR
, STÄNG MARKÖR
, PRINT
, RAISERROR
, BÖRJA TRANSAKTIONEN
, eller BEGÄRNA TRANSAKTION
återställ @@ROWCOUNT
värde till 0
.
Kör SELECT @@ROWCOUNT
i sig själv returnerar också 0
.