@@ROWCOUNT (Transact-SQL)

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.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

@@ROWCOUNT

Tipos de retorno

int

Comentários

As instruções 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: SET @local_variable, RETURN, READTEXT e select sem instruções de consulta, tais como SELECT GETDATE() ou SELECT 'Texto genérico'.

As 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 (Data Manipulation Language) 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.

As instruções como USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, BEGIN TRANSACTION ou COMMIT TRANSACTION redefinem o valor de ROWCOUNT para 0.

Exemplos

O exemplo a seguir executa uma instrução UPDATE e usa @@ROWCOUNT para detectar se quaisquer linhas foram alteradas.

USE AdventureWorks2008R2;
GO
UPDATE HumanResources.Employee 
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO