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 ensemble 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 du 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 constante indiquant que la source du curseur est une variable locale.

  • 'cursor_variable'
    Nom de la 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 du curseur

1

L'ensemble de résultats du curseur comprend au moins une ligne.

Pour les curseurs insensitifs et pilotés par jeux de clés, l'ensemble de résultats comprend au moins une ligne.

Pour les curseurs dynamiques, l'ensemble de résultats peut être vide, ou contenir une ou plusieurs lignes.

Le curseur affecté à cette variable est ouvert.

Pour les curseurs insensitifs et pilotés par jeux de clés, l'ensemble de résultats comprend au moins une ligne.

Pour les curseurs dynamiques, l'ensemble de résultats peut être vide, ou contenir une ou plusieurs lignes.

0

L'ensemble de résultats du curseur est vide.*

Le curseur affecté à cette variable est ouvert mais l'ensemble 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

Il n'existe aucun curseur portant le nom spécifié.

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

L'exemple suivant utilise la fonction CURSOR_STATUS pour afficher l'état d'un curseur avant et après qu'il a été ouvert et fermé.

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

Voici l'ensemble des résultats.

Après déclaration

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

-1

Après ouverture

----------

1

Après fermeture

-----------

-1