
Si on utilise une requête devant retourner plus d'une ligne, on doit déclarer un curseur, dit
explicite, auquel on associe cette requête. L'exploitation d'un curseur se fait en trois étapes :
Ouverture, lecture, fermeture.
Déclaration de curseur
La déclaration d'un curseur a pour effet d'associer un nom de variable de type curseur à une
requête SQL. Quand la requête sera exécutée (ouverture du curseur), on pourra accéder aux
lignes du résultat stockées en mémoire par le biais du nom associé (nom du curseur) et
transférer chaque ligne du résultat dans des variables.
On peut associer des paramètres formels à un curseur qui seront référencés dans la clause
WHERE de la requête.
CURSOR nom [(paraml type [,param2 type] ...)]
IS requête
[FOR UPDATE OF nom_col1 [, nom_col2] ... ];
Le type du paramètre peut être : char, number, boolean, date.
CURSOR curart
IS SELECT idarticle, désignation
FROM article;
Déclaration de curseur avec paramètres :
117
CURSOR curart (prixunit number(5,2), qte number)
IS SELECT idarticle, désignation
FROM article
WHERE prixunit > curart.prixunit
AND qtestock < qte ;
On remarque que lorsqu'il peut y avoir confusion de noms (ici prixunit), c'est le paramètre du
curseur qu'il faut préfixer et non pas la colonne de la table.