CURSOR_STATUS (Transact-SQL)

Funzione scalare che consente al chiamante di una stored procedure di determinare se la procedura ha restituito o meno un cursore e un set di risultati per un determinato parametro.

Icona di collegamento a un argomentoConvenzioni della 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.

  • '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 cursore. Le variabili di cursore devono essere definite utilizzando il tipo di dati cursor.

Tipi restituiti

smallint

Valore restituito

Nome cursore

Variabile cursore

1

Il set di risultati del cursore include 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.

I possibili valori sono i seguenti:

Tramite la procedura chiamata in precedenza, a questa variabile di OUTPUT non è stato assegnato alcun cursore.

Tramite la procedura chiamata in precedenza, a questa variabile di OUTPUT è stato assegnato un cursore, che tuttavia al completamento della procedura era chiuso. Il cursore viene pertanto deallocato e non viene restituito alla procedura chiamante.

A una variabile cursore dichiarata non è assegnato alcun cursore.

-3

Il cursore specificato non esiste.

La variabile cursore specificata non esiste oppure esiste ma non è ancora stato allocato un cursore.

* I cursori dinamici non restituiscono mai questo risultato.

Esempi

Nell'esempio seguente viene utilizzata la funzione CURSOR_STATUS per visualizzare lo stato di un cursore prima e dopo la relativa apertura o chiusura.

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

Set di risultati:

Dopo la dichiarazione

---------------

-1

Dopo l'apertura

----------

1

Dopo la chiusura

-----------

-1