Condividi tramite


CURSOR_STATUS (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase SQL in Microsoft Fabric

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

'locale'

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

'global'

Specifica una costante che indica che l'origine del cursore è un 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

piccoloint

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. 1 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 routine chiamata in precedenza non assegnava un cursore a questa OUTPUT variabile.

La routine assegnata in precedenza ha assegnato un cursore a questa OUTPUT variabile, ma il cursore si trovava in uno stato chiuso al termine della procedura. Il cursore viene pertanto deallocato e non viene restituito alla procedura chiamante.

Alla variabile cursore dichiarata non è assegnato alcun cursore.
-3 Un cursore con il nome specificato non esiste. Una variabile di cursore con il nome specificato non esiste o, se esistente, non è ancora stato allocato alcun cursore.

1 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
-- and 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