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 .