@@ROWCOUNT (Transact-SQL)
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Retorna o número de linhas afetadas pela última instrução. Se o número de linhas for maior que 2 bilhões, use ROWCOUNT_BIG.
Convenções de sintaxe de Transact-SQL
Sintaxe
@@ROWCOUNT
Observação
Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.
Tipos de retorno
int
Comentários
As instruções do Transact-SQL podem definir o valor de @@ROWCOUNT das seguintes maneiras:
Definir @@ROWCOUNT como o número de linhas afetadas ou lidas. As linhas podem ou não ser enviadas ao cliente.
Preservar @@ROWCOUNT da execução da instrução anterior.
Redefinir @@ROWCOUNT como 0, mas não retornar o valor ao cliente.
As instruções que fazem uma atribuição simples sempre definem o valor de @@ROWCOUNT como 1. Nenhuma linha é enviada ao cliente. Exemplos dessas instruções são: @local_variable, RETURN, READTEXT e select sem instruções de consulta, como SELECT GETDATE() ou SELECT 'Generic Text'.
Instruções que fazem uma atribuição em uma consulta ou usam RETURN em uma consulta definem o valor de @@ROWCOUNT como o número de linhas afetadas ou lidas pela consulta, por exemplo: SELECT @local_variable = c1 FROM t1.
As instruções DML (linguagem de manipulação de dados) definem o valor de @@ROWCOUNT como o número de linhas afetadas ou lidas pela consulta e retornam esse valor ao cliente. As instruções DML podem não enviar nenhuma linha ao cliente.
DECLARE CURSOR e FETCH definem o valor de @@ROWCOUNT como 1.
As instruções EXECUTE preservam o @@ROWCOUNT anterior.
Instruções como USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, RAISERROR, BEGIN TRANSACTION ou COMMIT TRANSACTION redefinem o valor ROWCOUNT para 0.
Os procedimentos armazenados compilados nativamente preservam a função @@ROWCOUNT anterior. As instruções do Transact-SQL dentro de procedimentos armazenados compilados nativamente não definem @@ROWCOUNT. Para saber mais, veja Procedimentos armazenados compilados nativamente.
Exemplos
O exemplo a seguir executa uma instrução UPDATE
e usa @@ROWCOUNT
para detectar se quaisquer linhas foram alteradas.
USE AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO
Consulte Também
Funções de sistema (Transact-SQL)
SET ROWCOUNT (Transact-SQL)