Compartilhar via


@@ROWCOUNT (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstâ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 exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Tipos de retorno

int

Comentários

As instruções Transact-SQL podem definir o valor das @@ROWCOUNT seguintes maneiras:

  • Defina @@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.
  • Redefina para 0, mas não retorne @@ROWCOUNT o valor ao cliente.

As instruções que fazem uma atribuição simples sempre definem o @@ROWCOUNT valor como 1. Nenhuma linha é enviada ao cliente. Exemplos dessas instruções são: SET @local_variable, RETURN, READTEXTe select sem instruções de consulta, como SELECT GETDATE() ou SELECT '<Generic Text>'.

As instruções que fazem uma atribuição em uma consulta ou usam RETURN em uma consulta definem o @@ROWCOUNT valor 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 @@ROWCOUNT valor como o número de linhas afetadas pela consulta e retornam esse valor ao cliente. As instruções DML podem não enviar linhas para o cliente.

DECLARE CURSOR e FETCH defina o @@ROWCOUNT valor como 1.

EXECUTE As instruções preservam o anterior @@ROWCOUNT.

Instruções como USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, , RAISERRORou COMMIT TRANSACTIONBEGIN TRANSACTIONredefinir o ROWCOUNT valor para 0.

Os procedimentos armazenados compilados nativamente preservam o @@ROWCOUNTarquivo . As instruções 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 AdventureWorks2022;
GO
UPDATE HumanResources.Employee
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO