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' }   
     )  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

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 être conforme aux règles applicables aux identificateurs de base de données.

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

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 de 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. Présente l’une de ces possibilités :

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

La procédure appelée précédemment affectait un curseur à cette variable OUTPUT, mais le curseur était à l’état fermé quand 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 Il n'existe aucun curseur portant le nom spécifié. Il n’existe aucune variable de curseur avec 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.

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

After declare
---------------
-1  
  
After Open
----------
1  
  
After Close
-----------
-1

Voir aussi

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