@@ROWCOUNT (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

返回受上一语句影响的行数。 如果行数大于 20 亿,请使用 ROWCOUNT_BIG

Transact-SQL 语法约定

语法

@@ROWCOUNT

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

返回类型

int

注解

Transact-SQL 语句可以通过以下方式设置值 @@ROWCOUNT

  • 设置为 @@ROWCOUNT 受影响或读取的行数。 行可能或可能不会发送到客户端。
  • 保留 @@ROWCOUNT 上一语句执行。
  • 重置 @@ROWCOUNT 为 0,但不将值返回到客户端。

使简单赋值始终设置为@@ROWCOUNT1的语句。 不将任何行发送到客户端。 这些语句的示例包括: SET @local_variableRETURNREADTEXT和 select,而不选择查询语句,例如 SELECT GETDATE()SELECT '<Generic Text>'

在查询中执行赋值或使用RETURN的语句将@@ROWCOUNT值设置为查询受影响或读取的行数,例如: SELECT @local_variable = c1 FROM t1

数据操作语言 (DML) 语句将 @@ROWCOUNT 值设置为受查询影响的行数,并将该值返回到客户端。 DML 语句可能不会向客户端发送任何行。

DECLARE CURSOR 并将 FETCH 值设置为 @@ROWCOUNT1.

EXECUTE 语句保留前 @@ROWCOUNT一个 。

诸如USESET <option>、、DEALLOCATE CURSORCLOSE CURSORPRINTRAISERROR、、或BEGIN TRANSACTIONCOMMIT TRANSACTION值重置为0ROWCOUNT语句。

本机编译的存储过程保留以前的 @@ROWCOUNT存储过程。 本机编译存储过程内的 Transact-SQL 语句未设置 @@ROWCOUNT。 有关详细信息,请参阅本机编译的存储过程

示例

以下示例执行 UPDATE 语句并使用 @@ROWCOUNT 来检测是否更改了任何行。

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