Les curseurs permettent de parcourir un jeu de données issu d’une requête de sélection et de traiter individuellement chaque ligne.
En règle générale, nous traitons les lignes par lot.
Toutes les lignes du lot font l’objet d’un traitement similaire.
Mais nous avons besoin, parfois, de différencier les opérations à exécuter en fonction de la valeur des colonnes d’une ligne.
Les curseurs sont une extension logique des jeux de résultats qui permettent aux applications de manipuler le jeu de résultats ligne par ligne. Nous retrouverons les mêmes principes mis en œuvre dans le cas de la manipulation de données au travers de composants tiers ADO associés à des fournisseurs de données ODBC ou OLE DB.
Nous allons découvrir au cours de cette séance les différentes instructions relatives aux curseurs :
Un curseur est une variable d’un type particulier CURSOR. Il se déclare donc à l’aide du mot clé DECLARE.
Exemple :
Par défaut un curseur est en défilement vers l’avant uniquement . C’est le cas le plus fréquent d’utilisation : on lit le curseur séquentiellement depuis la première ligne jusqu’à la dernière au moyen de l’opération FETCH NEXT.
Mais il est possible d’étendre les fonctionnalités de parcours de ce dernier en complétant la définition du curseur à l’aide du mot clé SCROLL.
Il sera alors possible d’utiliser de multiples opérations de déplacement, de manière relative ou absolue, par le biais des instructions FIRST, LAST, PRIOR, NEXT, RELATIVE et ABSOLUTE.
Le jeu de résultats est généré à partir de l’instruction SELECT spécifiée lors de la définition du curseur.
L’instruction OPEN déclenche l’exécution de la requête SELECT sous-jacente et charge le jeu de résultats.
Exemple :
Open list_C
L’instruction FETCH charge les valeurs de la ligne dans la liste de variables précisée en complément au niveau du mot clé INTO.
Exemple :
L’instruction FETCH peut être utilisée avec les arguments suivants :
Renvoie la ligne de résultats immédiatement après la ligne courante, et incrémente cette dernière de la ligne renvoyée. Si FETCH NEXT est la première extraction effectuée sur un curseur, cette instruction renvoie la première ligne dans le jeu de résultats. NEXT est l'option d'extraction du curseur par défaut.
Renvoie la ligne de résultats immédiatement avant la ligne courante, et décrémente cette dernière en fonction de la ligne renvoyée. Si FETCH PRIOR est la première extraction effectuée sur un curseur, aucune ligne n'est renvoyée et le curseur reste placé avant la première ligne.
FIRST
Renvoie la première ligne dans le curseur et la transforme en ligne courante.
Renvoie la dernière ligne dans le curseur et la transforme en ligne courante.
ABSOLUTE {n | @nvar}
Si n ou @nvar est un nombre positif, cela renvoie l'énième ligne depuis le début du curseur et transforme la ligne renvoyée en nouvelle ligne courante. Si n ou @nvar est un nombre négatif, cela renvoie l'énième ligne avant la fin du curseur et transforme la ligne renvoyée en nouvelle ligne courante. Si n ou @nvar est égal à 0, aucune ligne n'est renvoyée. n doit correspondre à une valeur constante de type entier et @nvar doit être de type smallint, tinyint ou int.
RELATIVE {n | @nvar}
Si n ou @nvar est un nombre positif, cela renvoie l'énième ligne à partir de la ligne courante et transforme la ligne renvoyée en nouvelle ligne courante. Si n ou @nvar est un nombre négatif, il renvoie l'énième ligne avant la ligne courante et transforme la ligne renvoyée en nouvelle ligne courante. Si n ou @nvar est égal à 0, la ligne courante est renvoyée.
Permet de préciser la liste des variables recevant la valeur des colonnes.
Cette liste doit respecter l’ordre des colonnes de l’ordre SELECT à l’origine du jeu de résultats.
Renvoie l'état de la dernière instruction FETCH effectuée sur un curseur actuellement ouvert par la connexion.
Valeurs renvoyées par l’instruction FETCH 0 : L'instruction FETCH a réussi.
Dans la base de données " Dans la base de données “Gestion des comptes bancaires” :
Exemple 1 :
Pour utiliser un curseur, vous devez mettre en œuvre le processus suivant :
Exemple 2 :
Exemple 3 :
A. Exécuter les exemples précédents B. Dans la base de données “Comptoir Anglais” :
2. Réaliser une procédure stockée qui affiche:
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.
Pas encore de commentaires.