Partager via


Curseurs (moteur de base de données)

Les opérations réalisées dans une base de données relationnelle s'exécutent sur un ensemble complet de lignes. L'ensemble de lignes retourné par une instruction SELECT contient toutes les lignes satisfaisant aux conditions de la clause WHERE de l'instruction. Cet ensemble complet de lignes retournées par l'instruction est appelé ensemble de résultats. Les applications, en particulier les applications interactives en ligne, peuvent ne pas toujours fonctionner efficacement si l'ensemble de résultats est traité comme une unité. Ces applications ont besoin d'un mécanisme leur permettant de travailler avec une seule ligne ou avec un petit bloc de lignes à la fois. Les curseurs sont une extension des ensembles de résultats et fournissent ce mécanisme.

Les curseurs permettent l'extension du traitement des résultats en procédant aux opérations suivantes :

  • Ils permettent de vous positionner sur des lignes spécifiques de l'ensemble de résultats.

  • Ils extraient une ligne ou un bloc de lignes à partir de la position actuelle dans l'ensemble de résultats.

  • Ils prennent en charge les modifications de données apportées aux lignes à la position actuelle dans l'ensemble de résultats.

  • Ils prennent en charge différents niveaux de visibilité des modifications apportées par d'autres utilisateurs aux données de la base de données qui figurent dans l'ensemble de résultats.

  • Ils permettent aux instructions Transact-SQL figurant dans les scripts, les procédures stockées et les déclencheurs d'accéder aux données d'un ensemble de résultats.

Demande de curseur

MicrosoftSQL Server prend en charge deux méthodes de demande de curseur :

  • Transact-SQL

    Le langage Transact-SQL prend en charge une syntaxe permettant l'utilisation de curseurs modélisés d'après la syntaxe de curseur ISO.

  • Fonctions de curseur de l'interface de programmation d'application (API) de bases de données

    SQL Server prend en charge la fonctionnalité de curseur des API des bases de données suivantes :

    • ADO (Microsoft ActiveX Data Object)

    • OLE DB

    • ODBC (Open Database Connectivity)

Une application ne doit jamais combiner ces deux méthodes de demande de curseur. Une application ayant utilisé l'API pour spécifier des comportements de curseur ne doit pas ensuite exécuter une instruction Transact-SQL DECLARE CURSOR pour demander aussi un curseur Transact-SQL. Une application ne doit exécuter une instruction DECLARE CURSOR que si elle a ramené tous les attributs de curseur de l'API à leurs valeurs par défaut.

Dans le cas où ni un curseur Transact-SQL, ni un curseur d'API n'a été demandé, SQL Server retourne par défaut à l'application un ensemble de résultats complet, appelé ensemble de résultats par défaut.

Processus des curseurs

Les curseurs Transact-SQL et les curseurs d'API ont une syntaxe différente, mais le processus général suivant est utilisé avec tous les curseurs SQL Server :

  1. Associez un curseur à l'ensemble de résultats d'une instruction Transact-SQL et définissez les caractéristiques du curseur, en indiquant par exemple si les lignes contenues dans le curseur peuvent être mises à jour.

  2. Exécutez l'instruction Transact-SQL pour remplir le curseur.

  3. Dans le curseur que vous voulez afficher, extrayez les lignes. L'opération consistant à récupérer une ligne ou un bloc de lignes à partir d'un curseur est appelée une extraction. Le défilement est l'opération consistant à effectuer une série d'extractions afin d'extraire des lignes vers l'avant ou vers l'arrière.

  4. Vous pouvez, si vous le souhaitez, effectuer des opérations de modification (mise à jour ou suppression) sur la ligne à la position actuelle du curseur.

  5. Fermez le curseur.