Il introduit un itérateur, qui peut effectuer des opérations, par exemple : ne traiter qu'une ligne sur deux lors de son parcours.
Principe
L'utilisation consiste à :
Déclarer le curseur définissant le jeu d'enregistrement (DECLARE).
Ouvrir le curseur pour établir le jeu d'enregistrement (OPEN).
Récupérer les données des variables locales (FETCH).
Fermer le curseur (CLOSE).
Un curseur par défaut traite les données ligne par ligne, mais un curseur scroll[2] n'est pas limité et peut tenir compte des lignes précédentes. En effet ce dernier peut faire appel à des données de façon absolue, à partir du début des enregistrements (FETCH ABSOLUTE), ou relativement à sa position (FETCH RELATIVE).
De plus, un curseur peut être SENSITIVE ou INSENSITIVE si on veut qu'il puisse modifier les enregistrements qu'il contient, ou pas[3].
Enfin, un curseur peut être déclaré WITH HOLD pour éviter qu'il ne soit fermé par une transaction informatique[4].
Par ailleurs, un curseur peut être utilisé dans une clause WHERE avec la syntaxe :
USEBase1declare@Nomvarchar(20)DECLAREcurseur1CURSORFORSELECTPrenomFROMTable1OPENcurseur1/* Premier enregistrement de la sélection */FETCHNEXTFROMcurseur1into@Nomprint'Salut '+@Nom/* Traitement de tous les autres enregistrements dans une boucle */while@@FETCH_STATUS=0beginFETCHNEXTFROMcurseur1into@Nomprint'Salut '+@NomendCLOSEcurseur1;DEALLOCATEcurseur1;
Notes et références
↑(en) Zohra Bellahsène, Database and XML Technologies: First International XML Database Symposium, XSYM 2003, Berlin, Germany, September 8, 2003, Proceedings, Springer Science & Business Media, (lire en ligne)
↑Kevin Kline, SQL en concentré, O'Reilly Media, Inc., (lire en ligne)
↑Frédéric Brouard, Rudi Bruchez et Christian Soutou, SQL, Pearson Education France, (lire en ligne)
↑(en) Kevin Gashyna et Michael Kyprianou, DB2 Universal Database V.8 Application Development Certification Guide, Prentice Hall Professional, (lire en ligne)