@@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
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
, READTEXT
y 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 CURSOR
DEALLOCATE CURSOR
, PRINT
, RAISERROR
, BEGIN TRANSACTION
o 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