@@CURSOR_ROWS (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
此函数返回连接上打开的最后一个游标中当前符合条件的行数。 为了提高性能,SQL Server 可异步填充大型键集和静态游标。 @@CURSOR_ROWS
可以调用以确定在调用时 @@CURSOR_ROWS
检索符合游标条件的行数。
@@CURSOR_ROWS
int
返回值 | 说明 |
---|---|
-m |
游标被异步填充。 返回的值 (-m) 是键集中当前的行数m。 |
-1 |
游标为动态游标。 因为动态游标可反映所有更改,所以游标符合条件的行数不断变化。 游标不一定检索所有限定行。 |
0 |
没有游标处于打开状态,没有为最后一个打开的游标限定的行,或者最后一个打开的游标被关闭或解除分配。 |
n |
游标已完全填充。 返回值 (n) 是游标中的总行数。 |
如果异步打开最后一个游标,@@CURSOR_ROWS
返回负数。 如果游标阈值的值 sp_configure
超过 0
,并且游标结果集中的行数超过游标阈值,则键集驱动程序或静态游标会异步打开。
此示例首先声明了一个游标,然后使用 SELECT
显示 @@CURSOR_ROWS
的值。 在游标打开前,该设置的值为 0
,之后其值为 -1
,后者表示游标键集被异步填充。
USE AdventureWorks2022;
GO
SELECT @@CURSOR_ROWS;
DECLARE Name_Cursor CURSOR
FOR
SELECT LastName, @@CURSOR_ROWS
FROM Person.Person;
OPEN Name_Cursor;
FETCH NEXT FROM Name_Cursor;
SELECT @@CURSOR_ROWS;
CLOSE Name_Cursor;
DEALLOCATE Name_Cursor;
GO
下面是结果集。
-----------
0
LastName (No column name) ROWSTAT
--------- ----------------- ---------
Sánchez -1 NULL
-----------
-1