V.7. Curseurs pour résultats à lignes
multiples
Notion
Il est déjà possible, lorsque vous
exécutez une requête dans une application, le jeu de
résultats est constitué d'un certain nombre de lignes. Nous nous
proposons en général, lorsque vous ne connaissez pas le nombre de
lignes que l'application recevra avant d'exécuter la requête, il
est de lors possible que les curseurs constituent un moyen de gérer les
jeux de résultats d'une requête à lignes multiples.
Ces choses étant dites, les curseurs vous permettent de
naviguer dans les résultats d'une requête et d'effectuer des
insertions, des mises à jour et des suppressions de données
sous-jacentes en tout point d'un jeu de résultats.
A cela s'ajoute que, pour gérer un curseur vous devez
respecter les étapes suivantes :
1. Déclarer un curseur pour une instruction SELECT
donnée à l'aide de l'instruction
DECLARE :
EXEC SQL DECLARE nom_curseur CURSOR FOR
requête_select ;
2. Ouvrir le curseur à l'aide de l'instruction OPEN :
EXEC SQL OPEN nom_curseur ;
3. Récupérer une par une les lignes du curseur
à l'aide de l'instruction FETCH : FETCH [ [
NEXT | PRIOR | FIRST | LAST | { ABSOLUTE | RELATIVE } nombre ]
{ FROM | IN } ] nom_curseur
INTO liste_variables
NEXT : Récupère la ligne suivante. Ceci est la
valeur par défaut.
PRIOR : Récupère la ligne
précédente.
FIRST : Récupère la
première ligne de la requête (identique à ABSOLUTE 1). LAST
: Récupère la dernière ligne de la requête
(identique à ABSOLUTE -1).
94
ABSOLUTE nombre : Récupère la
nombre e ligne de la requête ou la abs
(nombre)e ligne à partir de la fin si nombre
est négatif. La position avant la première ligne ou après
la dernière si nombre est en-dehors de l'échelle ; en
particulier, ABSOLUTE 0 se positionne avant la première ligne.
RELATIVE nombre : Récupère la
nombre e ligne ou la abs
(nombre)e ligne avant si nombre est négatif.
RELATIVE 0 récupère de nouveau la ligne
actuelle si elle existe.
nom_curseur : Le nom d'un curseur ouvert.
liste_variables : La liste des variables
hôtes destinées à recevoir la valeur de chacun des
attributs de la ligne courante. Le nombre de variables hôtes doit
être identique au nombre de colonnes de la table résultat.
4. Continuez l'extraction des lignes tant qu'il y en a.
5. Fermer le curseur à l'aide de l'instruction CLOSE :
CLOSE nom_curseur
Cette étape est que lors de son ouverture, un curseur est
placé avant la première ligne. Par
défaut, les curseurs sont automatiquement refermés
à la fin d'une transaction.
Voici un exemple utilisant la commande FETCH
:
|