CURSOR_STATUS (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Per un parametro specifico, CURSOR_STATUS visualizza se una dichiarazione di cursore ha restituito un cursore e un set di risultati o meno.

Convenzioni di sintassi Transact-SQL

Sintassi

CURSOR_STATUS   
     (  
          { 'local' , 'cursor_name' }   
          | { 'global' , 'cursor_name' }   
          | { 'variable' , 'cursor_variable' }   
     )  

Nota

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

Argomenti

'local'
Specifica una costante che indica che l'origine del cursore è un nome di cursore locale.

'cursor_name'
Nome del cursore. I nomi di cursore devono essere conformi alle regole per gli identificatori dei database.

'global'
Specifica una costante che indica che l'origine del cursore è un nome di cursore globale.

'variable'
Specifica una costante che indica che l'origine del cursore è una variabile locale.

'cursor_variable'
Nome di una variabile di cursore. Le variabili di cursore devono essere definite usando il tipo di dati cursor.

Tipi restituiti

smallint

Valore restituito Nome cursore Variabile cursore
1 Il set di risultati del cursore ha almeno una riga.

Nel caso di cursori INSENSITIVE e KEYSET, il set di risultati include almeno una riga.

Nel caso di cursori dinamici, il set di risultati può includere una o più righe oppure nessuna riga.
Il cursore allocato a questa variabile è aperto.

Nel caso di cursori INSENSITIVE e KEYSET, il set di risultati include almeno una riga.

Nel caso di cursori dinamici, il set di risultati può includere una o più righe oppure nessuna riga.
0 Il set di risultati del cursore è vuoto.* Il cursore allocato a questa variabile è aperto, ma il set di risultati è vuoto.*
-1 Il cursore è chiuso. Il cursore allocato a questa variabile è chiuso.
-2 Non applicabile. Ha una di queste possibilità:

La procedura chiamata in precedenza non ha assegnato un cursore a questa variabile di OUTPUT.

La procedura chiamata in precedenza ha assegnato un cursore a questa variabile di OUTPUT, ma al completamento della procedura il cursore era chiuso. Il cursore viene pertanto deallocato e non viene restituito alla procedura chiamante.

Alla variabile cursore dichiarata non è assegnato alcun cursore.
-3 Il cursore specificato non esiste. La variabile cursore con il nome specificato non esiste oppure esiste ma a questa non è ancora stato allocato un cursore.

* I cursori dinamici non restituiscono mai questo risultato.

Esempi

Questo esempio usa la funzione CURSOR_STATUS per visualizzare lo stato di un cursore dopo la dichiarazione, dopo l'apertura e dopo la chiusura di questo.

CREATE TABLE #TMP  
(  
   ii INT  
)  
GO  
  
INSERT INTO #TMP(ii) VALUES(1)  
INSERT INTO #TMP(ii) VALUES(2)  
INSERT INTO #TMP(ii) VALUES(3)  
  
GO  
  
--Create a cursor.  
DECLARE cur CURSOR  
FOR SELECT * FROM #TMP  
  
--Display the status of the cursor before and after opening  
--closing the cursor.  
  
SELECT CURSOR_STATUS('global','cur') AS 'After declare'  
OPEN cur  
SELECT CURSOR_STATUS('global','cur') AS 'After Open'  
CLOSE cur  
SELECT CURSOR_STATUS('global','cur') AS 'After Close'  
  
--Remove the cursor.  
DEALLOCATE cur  
  
--Drop the table.  
DROP TABLE #TMP  
  

Questo è il set di risultati.

After declare
---------------
-1  
  
After Open
----------
1  
  
After Close
-----------
-1

Vedi anche

Funzioni cursori (Transact-SQL)
Tipi di dati (Transact-SQL)