En SQL Server, puede usar @@ROWCOUNT
función del sistema para devolver el número de filas afectadas por la última instrucción T-SQL.
Por ejemplo, si una consulta devuelve 4 filas, @@ROWCOUNT
devolverá 4.
Ejemplo 1:Selección de datos
Aquí hay un ejemplo básico para demostrar cómo funciona.
SELECT * FROM Dogs;
SELECT @@ROWCOUNT;
Resultado:
+---------+-----------+-----------+ | DogId | DogName | GoodDog | |---------+-----------+-----------| | 1 | Fetch | 0 | | 2 | Fluffy | 0 | | 3 | Wag | 0 | +---------+-----------+-----------+ (3 rows affected) +--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+ (1 row affected)
En este caso, mi SELECT
declaración devolvió 3 filas, por lo que @@ROWCOUNT
devuelto 3.
Ejemplo 2:Actualización de datos
Este es un ejemplo del uso de @@ROWCOUNT
con una UPDATE
instrucción para probar si se actualizaron o no las filas.
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
Resultado:
(0 rows affected) A dog outside the system cannot be a good dog
En este caso, no se actualizaron filas porque el DogId no existía en la tabla. Pudimos usar @@ROWCOUNT
con un IF
instrucción para devolver un mensaje apropiado al usuario.
Aquí está de nuevo, pero esta vez el perro sí existe.
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 1
IF @@ROWCOUNT > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
Resultado:
(1 row affected) Your dog will be rewarded accordingly
¿Conjunto de datos extremadamente grande?
Si cree que la cantidad de filas afectadas por una declaración será más de 2 mil millones, use ROWCOUNT_BIG()
en su lugar.
Puede usarlo de la misma manera que @@ROWCOUNT
se utiliza.
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 4
IF ROWCOUNT_BIG() > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
Resultado:
(0 rows affected) A dog outside the system cannot be a good dog
Cuando @@ROWCOUNT
es Restablecer
Declaraciones como USE
, SET <option>
, DEALLOCATE CURSOR
, CLOSE CURSOR
, PRINT
, RAISERROR
, BEGIN TRANSACTION
, o COMMIT TRANSACTION
restablecer el @@ROWCOUNT
valor a 0
.
Ejecutando SELECT @@ROWCOUNT
por sí mismo también devolverá 0
.