In SQL Server kunt u de @@ROWCOUNT
. gebruiken systeemfunctie om het aantal rijen te retourneren dat is beïnvloed door de laatste T-SQL-instructie.
Als een zoekopdracht bijvoorbeeld 4 rijen retourneert, @@ROWCOUNT
zal terugkeren 4.
Voorbeeld 1 – Gegevens selecteren
Hier is een eenvoudig voorbeeld om te laten zien hoe het werkt.
SELECT * FROM Dogs;
SELECT @@ROWCOUNT;
Resultaat:
+---------+-----------+-----------+ | DogId | DogName | GoodDog | |---------+-----------+-----------| | 1 | Fetch | 0 | | 2 | Fluffy | 0 | | 3 | Wag | 0 | +---------+-----------+-----------+ (3 rows affected) +--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+ (1 row affected)
In dit geval mijn SELECT
instructie retourneerde 3 rijen, en dus @@ROWCOUNT
geretourneerd 3.
Voorbeeld 2 – Gegevens bijwerken
Hier is een voorbeeld van het gebruik van @@ROWCOUNT
met een UPDATE
statement om te testen of er rijen zijn bijgewerkt.
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
Resultaat:
(0 rows affected) A dog outside the system cannot be a good dog
In dit geval zijn er geen rijen bijgewerkt omdat de DogId niet in de tabel bestond. We hebben @@ROWCOUNT
. kunnen gebruiken met een IF
statement om een gepast bericht naar de gebruiker terug te sturen.
Hier is hij weer, maar deze keer bestaat de hond wel.
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
Resultaat:
(1 row affected) Your dog will be rewarded accordingly
Extreem grote dataset?
Als u denkt dat het aantal rijen dat door een instructie wordt beïnvloed meer dan 2 miljard zal zijn, gebruikt u ROWCOUNT_BIG()
in plaats daarvan.
Je kunt het op dezelfde manier gebruiken als @@ROWCOUNT
wordt gebruikt.
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
Resultaat:
(0 rows affected) A dog outside the system cannot be a good dog
Wanneer @@ROWCOUNT
is Reset
Uitspraken zoals USE
, SET <option>
, DEALLOCATE CURSOR
, CLOSE CURSOR
, PRINT
, RAISERROR
, BEGIN TRANSACTION
, of COMMIT TRANSACTION
reset de @@ROWCOUNT
waarde tot 0
.
Uitvoeren van SELECT @@ROWCOUNT
op zichzelf geeft ook 0
. terug .