Partager via


CURSOR_STATUS (Transact-SQL)

Fonction scalaire permettant à l'appelant d'une procédure stockée de déterminer si la procédure a retourné un curseur et un jeu de résultats pour un paramètre donné.

Icône Lien de rubriqueConventions de syntaxe de Transact-SQL

Syntaxe

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

Arguments

'local'

Spécifie une constante indiquant que la source du curseur est un nom de curseur local.

'cursor_name'

Nom d'un curseur. Un nom de curseur doit suivre les règles applicables aux identificateurs.

'global'

Spécifie une constante indiquant que la source du curseur est un nom de curseur global.

'variable'

Spécifie une constant indiquant que la source du curseur est une variable locale.

'cursor_variable'

Nom d'une variable de curseur. Une variable de curseur doit être définie à l'aide du type de données cursor.

Type de retour

smallint

Valeur retournée Nom du curseur Variable de curseur

1

Le jeu de résultats du curseur comprend au moins une ligne.

Pour les curseurs non et les clés sensitifs, le jeu de résultats comprend au moins une ligne.

Pour les curseurs dynamiques, le jeu de résultats peut être vide, ou contenir une ou plusieurs lignes.

Le curseur affecté à cette variable est ouvert.

Pour les curseurs non et les clés sensitifs, le jeu de résultats comprend au moins une ligne.

Pour les curseurs dynamiques, le jeu de résultats peut être vide, ou contenir une ou plusieurs lignes.

0

Le jeu de résultats du curseur est vide.*

Le curseur affecté à cette variable est ouvert mais le jeu de résultats est vide.*

-1

Le curseur est fermé.

Le curseur affecté à cette variable est fermé.

-2

Non applicable.

Valeurs possibles :

Aucun curseur n'a été affecté à cette variable OUTPUT lors du précédent appel de la procédure.

Un curseur a été affecté à cette variable OUTPUT lors du précédent appel de la procédure mais il était fermé pendant le déroulement de celle-ci. C'est la raison pour laquelle le curseur est désaffecté et qu'il n'est pas retourné à la procédure d'appel.

Aucun curseur n'est affecté à une variable de curseur déclarée.

-3

Aucun curseur avec le nom spécifié n'existe.

Il n'existe aucune variable de curseur portant le nom spécifié ou si c'est le cas, aucun curseur ne lui a encore été affecté.

* Les curseurs dynamiques ne retournent jamais cette valeur.

Exemple

Cet exemple illustre la création d'une procédure appelée lake_list et utilise la sortie en exécutant lake_list pour un contrôle de CURSOR_STATUS.

ms177609.note(fr-fr,SQL.90).gifRemarque :
Cet exemple dépend d'une procédure appelée check_authority qui n'a pas été créée.
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

Voir aussi

Référence

Fonctions de curseur (Transact-SQL)
Types de données (Transact-SQL)

Autres ressources

Utilisation des identificateurs comme noms d'objet

Aide et Informations

Assistance sur SQL Server 2005