@@ROWCOUNT (Transact-SQL)
Gibt die Anzahl der Zeilen zurück, auf die sich die letzte Anweisung ausgewirkt hat. Beträgt die Anzahl der Zeilen mehr als 2 Milliarden, verwenden Sie ROWCOUNT_BIG.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
@@ROWCOUNT
Rückgabetypen
int
Hinweise
Transact-SQL-Anweisungen können den Wert in @@ROWCOUNT auf folgende Weise festlegen:
Festlegen von @@ROWCOUNT auf die Anzahl der betroffenen oder gelesenen Zeilen. Zeilen werden möglicherweise an den Client gesendet.
Beibehalten von @@ROWCOUNT aus der vorherigen Anweisungsausführung.
Zurücksetzen von @@ROWCOUNT auf 0, doch ohne den Wert an den Client zurückzugeben.
Anweisungen, die eine einfache Zuweisung vornehmen, legen den Wert für @@ROWCOUNT stets auf 1 fest. Es werden keine Zeilen an den Client gesendet. Beispiele für diese Anweisungen: SET @local\_variable, RETURN, READTEXT und SELECT ohne Abfrageanweisungen wie SELECT GETDATE() oder SELECT 'Generic Text'.
Anweisungen, die eine Zuweisung in einer Abfrage vornehmen oder RETURN in einer Abfrage verwenden, legen den Wert für @@ROWCOUNT auf die Anzahl der von der Abfrage betroffenen oder gelesenen Zeilen fest, z. B.: SELECT @local\_variable = c1 FROM t1.
DML-Anweisungen (Data Manipulation Language) legen den Wert für @@ROWCOUNT auf die Anzahl der von der Abfrage betroffenen Zeilen fest und geben diesen Wert an den Client zurück. Die DML-Anweisungen senden möglicherweise keine Zeilen an den Client.
DECLARE CURSOR und FETCH legen den Wert für @@ROWCOUNT auf 1 fest.
EXECUTE-Anweisungen behalten die vorherige @@ROWCOUNT-Einstellung bei.
Mit Anweisungen wie USE, SET <Option>, DEALLOCATE CURSOR, CLOSE CURSOR, BEGIN TRANSACTION oder COMMIT TRANSACTION wird der ROWCOUNT-Wert auf 0 zurückgesetzt.
Systemintern kompilierte gespeicherte Prozeduren behalten die vorherige @@ROWCOUNT-Einstellung bei. Transact-SQL-Anweisungen in systemintern kompilierten gespeicherten Prozeduren legen die @@ROWCOUNT-Einstellung nicht fest. Weitere Informationen finden Sie unter Einführung in systemintern kompilierte gespeicherte Prozeduren.
Beispiele
Das folgende Beispiel führt eine UPDATE-Anweisung aus und erkennt mithilfe von @@ROWCOUNT, ob Zeilen geändert wurden.
USE AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO