Curseur et Boucle FOR - PLPGSQL
Bonjour,
je viens de me mettre à PLPGSQL et j'ai un problème dans l'utilisation des curseur.
Dans la doc (et dans le souvenir de mes cours) j'ai vu qu'il était possible d'utiliser un curseur dans une boucle FOR, ce qui permettait de se passer de l'ouverture et de la fermeture du curseur, géré automatiquement par celle ci.
J'ai donc essayé et je reçois une erreur assez étrange. Malgré mes recherche je n'ai pas trouvé l'origine.
Voici le code de ma petite fonction de test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
CREATE OR REPLACE FUNCTION test ()
RETURNS void
AS $$
DECLARE
c1 cursor IS select * from joueur;
joueur_row joueur%ROWTYPE;
BEGIN
FOR joueur_row in c1
LOOP
RAISE NOTICE '% %', joueur_row.joueur_id, joueur_row.joueur_nom;
END LOOP;
RETURN;
END
$$ LANGUAGE PLPGSQL |
Je reçois l'erreur suivant :
Code:
1 2 3 4 5
|
ERREUR: erreur de syntaxe sur ou près de << $1 >> au caractère 3
REQUÊTE : $1
CONTEXTE : PL/pgSQL function "test" line 6 at for over select rows
LIGNE 1 : $1 |
Si j'utilise un curseur implicite (FOR joueur_row in select * from joueur), la fonction marche, si je remplace la boucle FOR par un simple LOOP avec ouverture, fermeture et fetch manuel, ça marche aussi mais bien sur c'est beaucoup plus lourd à faire.
Je ne vois vraiment pas d'où cela vient, la syntaxe donné par la doc n'est pas compliqué :
Citation:
FOR recordvar IN bound_cursor [ ( argument_values ) ] LOOP
statements
END LOOP [ label ];
Si quelqu'un aurait une idée?
Merci.