@@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.

Themenlink (Symbol)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 derartige Anweisungen sind: SET @local_variable, RETURN, READTEXT sowie SELECT-Anweisungen ohne Abfrage, wie beispielsweise 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.

Anweisungen wie z. B. USE, SET <Option>, DEALLOCATE CURSOR, CLOSE CURSOR, BEGIN TRANSACTION oder COMMIT TRANSACTION setzen den ROWCOUNT-Wert auf 0 zurück.

Beispiele

Das folgende Beispiel führt eine UPDATE-Anweisung aus und erkennt mithilfe von @@ROWCOUNT, ob Zeilen geändert wurden.

USE AdventureWorks2008R2;
GO
UPDATE HumanResources.Employee 
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO