PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 04/12/2009 16:35:01

FNo
Membre

Petite question de curseur

Bonjour,
Voulant faire une itération sur un curseur, il m'est venu l'interrogation suivante : Comment revenir proprement au début?
J'utilise la commande Fetch pour me balader et move first à la fin. Oui mais voilà, après le move, la commande fetch passe au next, sautant le premier enregistrement. Illustration avec un exemple:

loop
fetch from my_cursor into my_record;
exit when my_record is null;
.
.
.
end loop;
move first from my_cursor;
move backward from my_cursor; --force le curseur au BOF

Je dois mal m'y prendre, il y a sûrement une façon de coder d'une meilleure façon. Merci de bien vouloir m'éclairer ;)

Hors ligne

#2 04/12/2009 19:37:14

Marc Cousin
Membre

Re : Petite question de curseur

Pour se mettre avant le premier enregistrement, il doit suffire de faire un "move absolute 0 from my_cursor" je pense (non testé?)


Marc.

Hors ligne

#3 04/12/2009 19:46:29

gleu
Administrateur

Re : Petite question de curseur

MOVE 0 ?

(je n'ai pas testé, mais il serait intéressant que tu testes et que tu nous tiennes au courant smile )


Guillaume.

Hors ligne

#4 04/12/2009 19:48:38

gleu
Administrateur

Re : Petite question de curseur

Après lecture de la doc, un « MOVE ABSOLUTE 0 » me paraît plus crédible. Voir http://docs.postgresql.fr/8.4/sql-fetch.html (oui, c'est la doc de FETCH mais les clauses de direction sont identiques et n'apparaissent que là).


Guillaume.

Hors ligne

#5 04/12/2009 19:49:00

gleu
Administrateur

Re : Petite question de curseur

Rahhh, je viens de voir que Marc m'a doublé .... smile


Guillaume.

Hors ligne

#6 09/12/2009 16:21:46

FNo
Membre

Re : Petite question de curseur

C'était écrit tellement petit dans la documentation que j'y suis passé à côté (la police de caractère n'est pas des plus lisible). J'ai pas tenté le zéro à cause du réflexe 0=première ligne. Merci à vous.

Hors ligne

Pied de page des forums