Partager via


CURSOR_STATUS (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Pour un paramètre donné, CURSOR_STATUS indique si une déclaration de curseur a retourné ou non un curseur et un jeu de résultats.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Les arguments

'local'

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

'global'

Spécifie une constante indiquant que la source du curseur est un 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.

Types de retour

smallint

Valeur retournée Nom du curseur Variable du curseur
1 Le jeu de résultats de curseur comprend au moins une ligne.

Pour les curseurs INSENSITIVE 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 INSENSITIVE 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 Le jeu de résultats du curseur est vide. 1 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. Présente l’une de ces possibilités :

La procédure appelée précédemment n’a pas affecté de curseur à cette OUTPUT variable.

La procédure précédemment affectée a affecté un curseur à cette OUTPUT variable, mais le curseur était dans un état fermé lorsque la procédure s’est terminée. 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é à la variable de curseur déclarée.
-3 Un curseur portant le nom spécifié n’existe pas. Une variable de curseur portant le nom spécifié n’existe pas ou, s’il en existe un, aucun curseur n’est encore alloué à celui-ci.

1 Curseurs dynamiques ne retournent jamais ce résultat.

Exemples

Cet exemple utilise la fonction CURSOR_STATUS pour afficher l’état d’un curseur, après sa déclaration, après son ouverture et après sa fermeture.

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;

Voici le jeu de résultats.

After declare
---------------
-1

After Open
----------
1

After Close
-----------
-1