@@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
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. - Preserve
@@ROWCOUNT
da execução da instrução anterior. - Redefina
@@ROWCOUNT
como 0, mas não retorne o valor para o 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: , RETURN
, e select sem instruções de consulta, SET @local_variable
como SELECT GETDATE()
ou SELECT '<Generic Text>'
READTEXT
.
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 nenhuma linha para o cliente.
DECLARE CURSOR
e FETCH
defina o @@ROWCOUNT
valor como 1
.
EXECUTE
preservam o .@@ROWCOUNT
Instruções como USE
, , , DEALLOCATE CURSOR
CLOSE CURSOR
, PRINT
, , RAISERROR
, BEGIN TRANSACTION
, ou COMMIT TRANSACTION
redefinem o ROWCOUNT
valor para 0
SET <option>
.
Os procedimentos armazenados compilados nativamente preservam o @@ROWCOUNT
. 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