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 .