sql >> Base de Datos >  >> RDS >> Sqlserver

@@ROWCOUNT:obtenga el número de filas afectadas por la última declaración en SQL Server

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 .