@@ROWCOUNT (Transact-SQL)
Se aplica a:SQL Server
Azure SQL Database
Azure 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 y versiones anteriores, consulte Versiones anteriores de la documentación.
Tipos de valor devuelto
int
Observaciones
Las instrucciones Transact-SQL pueden establecer el valor de @@ROWCOUNT de las siguientes maneras:
Establecer @@ROWCOUNT en el número de filas afectadas o leídas. Las filas pueden o no enviarse al cliente.
Conservar @@ROWCOUNT de la anterior ejecución de una instrucción.
Restablecer @@ROWCOUNT en 0 y no devolver el valor al cliente.
Las instrucciones que realizan una asignación simple siempre establecen el valor @@ROWCOUNT en 1. No se envían filas al cliente. Estos son algunos ejemplos de estas instrucciones: SET @local_variable, RETURN, READTEXT y SELECT sin instrucciones de consulta, como por ejemplo, SELECT GETDATE() o SELECT 'Texto genérico'.
Las instrucciones que realizan una asignación en una consulta o usan RETURN en una consulta establecen el valor @@ROWCOUNT en el número de filas afectadas o leídas por la consulta, como por ejemplo: SELECT @local_variable = c1 FROM t1.
Las instrucciones de lenguaje de manipulación de datos (DML) establecen el valor de @@ROWCOUNT en el número de filas afectadas por la consulta y devuelven ese valor al cliente. Las instrucciones DML pueden no enviar ninguna fila al cliente.
DECLARE CURSOR y FETCH establecen el valor de @@ROWCOUNT en 1.
Las instrucciones EXECUTE conservan el valor anterior de @@ROWCOUNT.
Las instrucciones como USE, SET <opción>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, RAISERROR, BEGIN TRANSACTION o COMMIT TRANSACTION restablecen el valor de ROWCOUNT en 0.
Los procedimientos almacenados compilados de forma nativa mantienen el @@ROWCOUNT anterior. 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 AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO
Consulte también
Funciones del sistema (Transact-SQL)
SET ROWCOUNT (Transact-SQL)