@@ROWCOUNT (Transact-SQL)
适用于:SQL Server
Azure SQL 数据库 Azure SQL 托管实例
返回受上一语句影响的行数。 如果行数大于 20 亿,请使用 ROWCOUNT_BIG。
语法
@@ROWCOUNT
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
返回类型
int
注解
Transact-SQL 语句可以通过以下方式设置值 @@ROWCOUNT
:
- 设置为
@@ROWCOUNT
受影响或读取的行数。 行可能或可能不会发送到客户端。 - 保留
@@ROWCOUNT
上一语句执行。 - 重置
@@ROWCOUNT
为 0,但不将值返回到客户端。
使简单赋值始终设置为@@ROWCOUNT
1
的语句。 不将任何行发送到客户端。 这些语句的示例包括: SET @local_variable
、 RETURN
、 READTEXT
和 select,而不选择查询语句,例如 SELECT GETDATE()
或 SELECT '<Generic Text>'
。
在查询中执行赋值或使用RETURN
的语句将@@ROWCOUNT
值设置为查询受影响或读取的行数,例如: SELECT @local_variable = c1 FROM t1
数据操作语言 (DML) 语句将 @@ROWCOUNT
值设置为受查询影响的行数,并将该值返回到客户端。 DML 语句可能不会向客户端发送任何行。
DECLARE CURSOR
并将 FETCH
值设置为 @@ROWCOUNT
1
.
EXECUTE
语句保留前 @@ROWCOUNT
一个 。
诸如USE
、SET <option>
、、DEALLOCATE CURSOR
、CLOSE CURSOR
PRINT
、RAISERROR
、、或BEGIN TRANSACTION
将COMMIT TRANSACTION
值重置为0
等ROWCOUNT
语句。
本机编译的存储过程保留以前的 @@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