Condividi tramite


@@CURSOR_ROWS (Transact-SQL)

Si applica a:SQL ServerAzure SQL DatabaseIstanza gestita di SQL di Azure

Questa funzione restituisce il numero di righe idonee attualmente nell'ultimo cursore aperto sulla connessione. Per migliorare le prestazioni, SQL Server può popolare i cursori statistici e i set di chiavi di grandi dimensioni in modo asincrono. @@CURSOR_ROWS può essere chiamato per determinare che il numero di righe qualificate per un cursore viene recuperato al momento della @@CURSOR_ROWS chiamata.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

@@CURSOR_ROWS

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere Documentazione delle versioni precedenti.

Tipi restituiti

int

Valore restituito

Valore restituito Descrizione
-m Il cursore viene popolato in modo asincrono. Il valore restituito (-m) corrisponde al numero di righe risultanti per il set di chiavi.
-1 Il cursore è dinamico. Poiché nei cursori dinamici vengono riportate tutte le modifiche, il numero delle righe risultanti per il cursore cambia in modo costante. Il cursore non recupera necessariamente tutte le righe qualificate.
0 Nessun cursore aperto, nessuna riga qualificata per l'ultimo cursore aperto o l'ultimo cursore aperto viene chiuso o deallocato.
n Il cursore è completamente popolato. Il valore restituito (n) corrisponde al numero totale di righe nel cursore.

Osservazioni:

@@CURSOR_ROWS restituisce un numero negativo se l'ultimo cursore è stato aperto in modalità asincrona. I cursori keyset-driver o statici vengono aperti in modo asincrono se il valore per sp_configure la soglia del cursore supera 0e il numero di righe nel set di risultati del cursore supera la soglia del cursore.

Esempi

Questo esempio prima dichiara un cursore e quindi usa l'istruzione SELECT per visualizzare il valore della funzione @@CURSOR_ROWS. Prima dell'apertura del cursore, il valore della funzione è 0. Il valore diventa quindi -1, a indicare che il set di chiavi del cursore viene popolato in modo asincrono.

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

Set di risultati.

-----------
0

LastName   (No column name)   ROWSTAT
---------  -----------------  ---------
Sánchez    -1                 NULL

-----------
-1