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 relative alla sintassi Transact-SQL
Sintassi
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
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
Il set di risultati è il seguente.
After declare
---------------
-1
After Open
----------
1
After Close
-----------
-1
Vedi anche
Funzioni per i cursori (Transact-SQL)
Tipi di dati (Transact-SQL)