Compartir a través de


@@ROWCOUNT (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Devuelve el número de filas afectadas por la última instrucción. Si el número de filas superior a dos mil millones, use ROWCOUNT_BIG.

Convenciones de sintaxis de Transact-SQL

Sintaxis

@@ROWCOUNT

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Tipos de valores devueltos

int

Comentarios

Las instrucciones Transact-SQL pueden establecer el valor de @@ROWCOUNT las maneras siguientes:

  • Establezca @@ROWCOUNT en el número de filas afectadas o leídas. Es posible que las filas se envíen o no al cliente.
  • Conservar @@ROWCOUNT de la ejecución de la instrucción anterior.
  • Restablezca @@ROWCOUNT a 0, pero no devuelva el valor al cliente.

Las instrucciones que hacen una asignación simple siempre establecen el @@ROWCOUNT valor en 1. No se envían filas al cliente. Algunos ejemplos de estas instrucciones son: SET @local_variable, RETURN, READTEXTy select sin instrucciones de consulta como SELECT GETDATE() o SELECT '<Generic Text>'.

Instrucciones que realizan una asignación en una consulta o usan RETURN en una consulta establecen el valor en @@ROWCOUNT el número de filas afectadas o leídas por la consulta, por ejemplo: SELECT @local_variable = c1 FROM t1.

Las instrucciones del lenguaje de manipulación de datos (DML) establecen el @@ROWCOUNT valor en el número de filas afectadas por la consulta y devuelven ese valor al cliente. Es posible que las instrucciones DML no envíen ninguna fila al cliente.

DECLARE CURSOR y FETCH establezca el @@ROWCOUNT valor en 1.

EXECUTE Las instrucciones conservan el objeto anterior @@ROWCOUNT.

Instrucciones como USE, , SET <option>, CLOSE CURSORDEALLOCATE CURSOR, PRINT, RAISERROR, BEGIN TRANSACTIONo COMMIT TRANSACTION restablezca el ROWCOUNT valor a 0.

Los procedimientos almacenados compilados de forma nativa conservan el anterior @@ROWCOUNT. Las instrucciones Transact-SQL dentro de procedimientos almacenados compilados de forma nativa no establecen @@ROWCOUNT. Para más información, vea Procedimientos almacenados compilados de forma nativa.

Ejemplos

En el siguiente ejemplo se ejecuta una instrucción UPDATE y se utiliza @@ROWCOUNT para detectar si ha cambiado alguna fila.

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