@@CURSOR_ROWS (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Esta función devuelve el número de filas aptas actualmente en el último cursor abierto en la conexión. Para mejorar el rendimiento, SQL Server puede rellenar asincrónicamente los cursores estáticos y de conjunto de claves de gran tamaño. @@CURSOR_ROWS
se puede llamar a para determinar que el número de filas que califican para un cursor se recuperan en el momento de la @@CURSOR_ROWS
llamada.
Convenciones de sintaxis de Transact-SQL
Sintaxis
@@CURSOR_ROWS
Tipos de valores devueltos
int
Valor devuelto
Valor devuelto | Descripción |
---|---|
-m |
El cursor se rellena de forma asincrónica. El valor devuelto (-m) es el número de filas que el conjunto de claves contiene actualmente. |
-1 |
El cursor es dinámico. Como los cursores dinámicos reflejan todos los cambios, el número de filas correspondientes al cursor cambia constantemente. El cursor no recupera necesariamente todas las filas calificadas. |
0 |
No hay cursores abiertos, ninguna fila calificada para el último cursor abierto o el cursor abierto por última vez está cerrado o desasignado. |
n |
El cursor está completamente relleno. El valor devuelto (n) es el número total de filas del cursor. |
Observaciones
@@CURSOR_ROWS
devuelve un número negativo si el último cursor se ha abierto de forma asincrónica. El controlador de conjunto de claves o los cursores estáticos se abren de forma asincrónica si el valor sp_configure
del umbral de cursor supera 0
y el número de filas del conjunto de resultados del cursor supera el umbral del cursor.
Ejemplos
Este ejemplo declara primero un cursor y luego usa SELECT
para mostrar el valor de @@CURSOR_ROWS
. La opción tiene el valor 0
antes de que se abra el cursor y luego tiene el valor -1
para indicar que el conjunto de claves del cursor se rellena de forma asincrónica.
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
Los conjuntos de resultados son los siguientes.
-----------
0
LastName (No column name) ROWSTAT
--------- ----------------- ---------
Sánchez -1 NULL
-----------
-1