In SQL Server können Sie den @@ROWCOUNT verwenden Systemfunktion, um die Anzahl der von der letzten T-SQL-Anweisung betroffenen Zeilen zurückzugeben.
Wenn eine Abfrage beispielsweise 4 Zeilen zurückgibt, @@ROWCOUNT gibt 4 zurück.
Beispiel 1 – Auswahl von Daten
Hier ist ein einfaches Beispiel, um zu demonstrieren, wie es funktioniert.
SELECT * FROM Dogs;
SELECT @@ROWCOUNT; Ergebnis:
+---------+-----------+-----------+ | DogId | DogName | GoodDog | |---------+-----------+-----------| | 1 | Fetch | 0 | | 2 | Fluffy | 0 | | 3 | Wag | 0 | +---------+-----------+-----------+ (3 rows affected) +--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+ (1 row affected)
In diesem Fall mein SELECT -Anweisung gab 3 Zeilen zurück, also @@ROWCOUNT zurückgegeben 3.
Beispiel 2 – Aktualisieren von Daten
Hier ist ein Beispiel für die Verwendung von @@ROWCOUNT mit einem UPDATE -Anweisung, um zu testen, ob Zeilen aktualisiert wurden oder nicht.
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 Ergebnis:
(0 rows affected) A dog outside the system cannot be a good dog
In diesem Fall wurden keine Zeilen aktualisiert, da die DogId nicht in der Tabelle vorhanden war. Wir konnten @@ROWCOUNT verwenden mit einem IF -Anweisung, um eine entsprechende Nachricht an den Benutzer zurückzugeben.
Hier ist er wieder, aber diesmal existiert der Hund.
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 Ergebnis:
(1 row affected) Your dog will be rewarded accordingly
Extrem großer Datensatz?
Wenn Sie glauben, dass die Anzahl der von einer Anweisung betroffenen Zeilen mehr als 2 Milliarden betragen wird, verwenden Sie ROWCOUNT_BIG() stattdessen.
Sie können es genauso verwenden wie @@ROWCOUNT verwendet wird.
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 Ergebnis:
(0 rows affected) A dog outside the system cannot be a good dog
Wenn @@ROWCOUNT wird zurückgesetzt
Anweisungen wie USE , SET <option> , DEALLOCATE CURSOR , CLOSE CURSOR , PRINT , RAISERROR , BEGIN TRANSACTION , oder COMMIT TRANSACTION setzen Sie @@ROWCOUNT zurück Wert auf 0 .
Ausführen von SELECT @@ROWCOUNT selbst wird auch 0 zurückgeben .