pb fonction plpgsql qui renvoi SETOF record
Bonjour, voilà je cherche à faire une fonction plpgsql qui renvoi un liste d'enregistrement qui serront traiter par une autre fonction "générique".
La premiere étant pour renvoyé la liste des société avec leur nombre total de connexion sur une période donner.
La seconde donne la liste des 10 meilleurs (générique car elle poura faire la même chose avec les marques, etc.. utilisé dans la base)
Seulement voilà je n'arrive déjà pas à faire la première correctement :(
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| create or replace function meilleur_societe(integer, integer, integer, integer) returns setof record
as
$$
declare
annee alias for $1;
mois1 alias for $2;
mois2 alias for $3;
soc_id alias for $4;
liste record;
begin
for liste in select stats_soc_id as ID, sum(stats_soc_val) as TOT
from stats_societe
where extract(month from stats_soc_periode) between mois1 and mois2
and extract(year from stats_soc_periode) = annee
and stats_soc_id <> soc_id
group by stats_soc_id
loop
return next liste;
end loop;
return;
end;
$$
language'plpgsql'; |
quand je fais
Code:
select meilleur_societe(2007, 5, 8, 444) as blob;
j'ai :
ERROR: set-valued function called in context that cannot accept a set
État SQL :0A000
Contexte : PL/pgSQL function "meilleur_societe" line 15 at return next
par contre si je fais la "requete" SQL directement avec les paramètres (hors fonction donc) j'ai bien ce que je veux.
Mon pb est donc que je ne sais pas comment renvoyer un record de 1 ou plusieur ligne correctement.
Merci pour votre aide