OPEN (Transact-SQL)
Ouvre un curseur de serveur Transact-SQL et remplit ce dernier en exécutant l'instruction Transact-SQL spécifiée dans l'instruction DECLARE CURSOR ou SET cursor_variable.
Conventions de la syntaxe de Transact-SQL
Syntaxe
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
Arguments
GLOBAL
Indique que cursor_name fait référence à un curseur global.
cursor_name
Représente le nom d'un curseur déclaré. S'il existe deux curseurs, un global et un local nommés cursor_name, la variable cursor_name fait référence au curseur global si GLOBAL est spécifié, sinon elle fait référence au curseur local.
cursor_variable_name
Nom d'une variable de curseur faisant référence à un curseur.
Notes
Si le curseur est déclaré avec l'option INSENSITIVE ou STATIC, OPEN crée une table temporaire pour recueillir l'ensemble de résultats. OPEN échoue si la longueur d'une ligne de l'ensemble de résultats est supérieure à la longueur de ligne maximale des tables SQL Server. Si le curseur est déclaré avec l'option KEYSET, OPEN crée une table temporaire pour recueillir le jeu de clés. Les tables temporaires sont stockées dans tempdb.
Après avoir ouvert un curseur, utilisez la fonction @@CURSOR_ROWS pour recevoir le nombre de lignes éligibles dans le dernier curseur ouvert.
Remarque : |
---|
SQL Server 2005 ne prend pas en charge la création asynchrone de curseurs de jeux de clés ou de curseurs statiques Transact-SQL. Les opérations Transact-SQL sur les curseurs telles que OPEN ou FETCH sont exécutées par lot : la génération asynchrone de curseurs Transact-SQL n'est donc pas nécessaire. SQL Server 2005 continue de prendre en charge les curseurs asynchrones de serveurs d'API de jeux de clés ou statiques lorsque la faible latence de l'instruction OPEN est une préoccupation à cause des aller-retours du client pour chaque opération de curseur. |
Exemple
L'exemple suivant ouvre un curseur et extrait toutes les lignes.
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks.HumanResources.vEmployee
WHERE LastName like 'B%';
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
Voir aussi
Référence
CLOSE (Transact-SQL)
@@CURSOR_ROWS (Transact-SQL)
DEALLOCATE (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
FETCH (Transact-SQL)