Partilhar via


@@ROWCOUNT (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve o número de linhas afetadas pela última instrução. Se o número de linhas for superior a 2 mil milhões, use ROWCOUNT_BIG.

Transact-SQL convenções de sintaxe

Sintaxe

@@ROWCOUNT

Tipos de devolução

int

Observações

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

  • Definido @@ROWCOUNT para o número de linhas afetadas ou lidas. As linhas podem ou não ser enviadas ao cliente.
  • Guarde @@ROWCOUNT da declaração anterior.
  • Reinicia @@ROWCOUNT para 0 mas não devolvas o valor ao cliente.

As instruções que fazem uma atribuição simples definem sempre o @@ROWCOUNT valor para 1. Não são enviadas linhas ao cliente. Exemplos destas afirmações são: SET @local_variable, RETURN, READTEXT, e select sem instruções de consulta como SELECT GETDATE() ou SELECT '<Generic Text>'.

As instruções que fazem uma atribuição numa consulta ou usam RETURN numa consulta definem o @@ROWCOUNT valor para o número de linhas afetadas ou lidas pela consulta, por exemplo: SELECT @local_variable = c1 FROM t1.

As instruções de linguagem de manipulação de dados (DML) definem o @@ROWCOUNT valor para o número de linhas afetadas pela consulta e devolvem esse valor ao cliente. As instruções DML podem não enviar linhas para o cliente.

DECLARE CURSOR e FETCH define o @@ROWCOUNT valor para 1.

EXECUTE As sentenças preservam os anteriores @@ROWCOUNT.

Afirmações como USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, RAISERROR, , BEGIN TRANSACTION, ou COMMIT TRANSACTION redefinir o ROWCOUNT valor para 0.

Os procedimentos armazenados compilados nativamente preservam o .@@ROWCOUNT Transact-SQL instruções dentro de procedimentos armazenados compilados nativamente não definem @@ROWCOUNT. Para obter mais informações, consulte Procedimentos armazenados compilados nativamente.

Examples

O exemplo seguinte executa uma UPDATE instrução e é usado @@ROWCOUNT para detetar se alguma linha foi alterada.

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