Condividi tramite


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

In questo esempio viene creata la procedura lake_list e l'output della procedura lake_list viene utilizzato come controllo di CURSOR_STATUS.

[!NOTA] Questo esempio dipende dalla procedura check_authority, che non è stata creata.

IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'lake_list' AND type = 'P')
   DROP PROCEDURE lake_list
GO
CREATE PROCEDURE lake_list
   ( @region varchar(30),
     @size integer,
     @lake_list_cursor CURSOR VARYING OUTPUT )
AS 
BEGIN
   DECLARE @ok SMALLINT
   EXECUTE check_authority @region, username, @ok OUTPUT
   IF @ok = 1
      BEGIN
      SET @lake_list_cursor = CURSOR LOCAL SCROLL FOR
         SELECT name, lat, long, size, boat_launch, cost
         FROM lake_inventory
         WHERE locale = @region AND area >= @size
         ORDER BY name
      OPEN @lake_list_cursor
      END
END
DECLARE @my_lakes_cursor CURSOR
DECLARE @my_region char(30)
SET @my_region = 'Northern Ontario'
EXECUTE lake_list @my_region, 500, @my_lakes_cursor OUTPUT
IF Cursor_Status('variable', '@my_lakes_cursor') <= 0
   BEGIN
   /* Some code to tell the user that there is no list of
   Lakes. */
   END
ELSE
   BEGIN
      FETCH @my_lakes_cursor INTO -- Destination here
      -- Continue with other code here.
END

Vedere anche

Riferimento

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

Altre risorse

Utilizzo degli identificatori come nomi di oggetti

Guida in linea e informazioni

Assistenza su SQL Server 2005