Freigeben über


@@ROWCOUNT (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

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.

Transact-SQL-Syntaxkonventionen

Syntax

@@ROWCOUNT

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Rückgabetypen

int

Hinweise

Transact-SQL-Anweisungen können den Wert auf @@ROWCOUNT folgende Weise festlegen:

  • Wird auf die Anzahl der betroffenen Zeilen oder lesevorgänge festgelegt @@ROWCOUNT . Zeilen können an den Client gesendet werden.
  • Beibehalten @@ROWCOUNT aus der vorherigen Anweisungsausführung.
  • Setzen Sie @@ROWCOUNT den Wert auf 0 zurück, geben Sie den Wert jedoch nicht an den Client zurück.

Anweisungen, die eine einfache Zuordnung machen, legen immer den @@ROWCOUNT Wert auf 1. Es werden keine Zeilen an den Client gesendet. Beispiele für diese Anweisungen sind: SET @local_variable, RETURN, READTEXT, und wählen Sie ohne Abfrageanweisungen wie SELECT GETDATE() oder SELECT '<Generic Text>'.

Anweisungen, die eine Zuweisung in einer Abfrage vornehmen oder in einer Abfrage verwenden RETURN , legen den @@ROWCOUNT Wert auf die Anzahl der betroffenen Zeilen fest oder werden von der Abfrage gelesen, z. B.: SELECT @local_variable = c1 FROM t1.

Dml-Anweisungen (Data Manipulation Language) legen den @@ROWCOUNT Wert auf die Anzahl der zeilen fest, die von der Abfrage betroffen sind, 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 Sie den @@ROWCOUNT Wert auf 1.

EXECUTE Anweisungen behalten die vorherige @@ROWCOUNT.

Anweisungen wie USE, , SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, , RAISERROR, , BEGIN TRANSACTIONoder COMMIT TRANSACTION setzen den ROWCOUNT Wert auf 0.

Nativ kompilierte gespeicherte Prozeduren behalten die vorherige @@ROWCOUNT. Transact-SQL-Anweisungen in nativ kompilierten gespeicherten Prozeduren werden nicht festgelegt @@ROWCOUNT. Weitere Informationen finden Sie unter Nativ kompilierte gespeicherte Prozeduren.

Beispiele

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

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