No SQL Server, você pode usar o
@@ROWCOUNT
função do sistema para retornar o número de linhas afetadas pela última instrução T-SQL. Por exemplo, se uma consulta retornar 4 linhas,
@@ROWCOUNT
retornará 4. Exemplo 1 – Selecionando dados
Aqui está um exemplo básico para demonstrar como 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)
Neste caso, meu
SELECT
declaração retornou 3 linhas e, portanto, @@ROWCOUNT
devolvido 3. Exemplo 2 – Atualizando dados
Aqui está um exemplo de uso de
@@ROWCOUNT
com um UPDATE
para testar se alguma linha foi atualizada ou não. 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
Nesse caso, nenhuma linha foi atualizada porque o DogId não existia na tabela. Conseguimos usar
@@ROWCOUNT
com um IF
para retornar uma mensagem apropriada ao usuário. Aqui está novamente, mas desta vez o cachorro 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 dados extremamente grande?
Se você acha que a quantidade de linhas afetadas por uma instrução será superior a 2 bilhões, use
ROWCOUNT_BIG()
em vez de. Você pode usá-lo da mesma forma que
@@ROWCOUNT
é usado. 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
Quando @@ROWCOUNT
é redefinido
Declarações como
USE
, SET <option>
, DEALLOCATE CURSOR
, CLOSE CURSOR
, PRINT
, RAISERROR
, BEGIN TRANSACTION
, ou COMMIT TRANSACTION
redefina o @@ROWCOUNT
valor para 0
. Executando S
ELECT @@ROWCOUNT
por si só também retornará 0
.