[Résolu]Problème dans une procedure
Bonjour,
Suite à un précedent post, je suis passé par une procedure stocké pour obtenir une table qui contient ce que je souhaite. Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
DECLARE
var_centre ALIAS FOR $1;
var_categorie ALIAS FOR $2;
var_result type_stata_gpcat%ROWTYPE;
i integer;
BEGIN
FOR i IN 1..7 LOOP
var_result.categorie := i;
SELECT COUNT(choix_periode) INTO var_result.nbr_annuel FROM TBL_ACTIVITE A, TBL_INSCRIPTION TI WHERE TI.code_activite=A.code_activite AND A.categorie=i AND choix_periode='annuel';
SELECT COUNT(choix_periode) INTO var_result.nbr_s1 FROM TBL_ACTIVITE A, TBL_INSCRIPTION TI WHERE TI.code_activite=A.code_activite AND A.categorie=i AND choix_periode='semestre 1';
SELECT COUNT(choix_periode) INTO var_result.nbr_s2 FROM TBL_ACTIVITE A, TBL_INSCRIPTION TI WHERE TI.code_activite=A.code_activite AND A.categorie=i AND choix_periode='semestre 2';
SELECT count(*) INTO var_result.nbr_desinscrit FROM TBL_ACTIVITE A, TBL_INSCRIPTION TI WHERE TI.code_activite=A.code_activite AND A.categorie=i AND desinscription=TRUE;
SELECT sum(prix_inscription) INTO var_result.recette FROM TBL_ACTIVITE A, TBL_INSCRIPTION TI WHERE TI.code_activite=A.code_activite AND A.categorie=i;
RETURN NEXT var_result;
END LOOP;
RETURN;
END; |
Cette fonction a été réalisé sous phppgadm. avec comme argument :
Valeur de sortie
Code:
setof type_stata_gpcat
langage : plpgsql
Mais je comprends pas pourquoi j'obtiens l'erreur suivante :
Citation:
Erreur SQL :
ERROR: set-valued function called in context that cannot accept a set
CONTEXT: PL/pgSQL function "fnc_stata_gpcat" line 21 at return next
In statement:
select fnc_stata_gpcat(1,1);
Pour information, voici mon type type_stata_gpcat :
Code:
1 2 3 4 5 6 7 8 9
|
CREATE TYPE type_stata_gpcat AS(
categorie integer,
nbr_annuel integer,
nbr_s1 integer,
nbr_s2 integer,
nbr_desinscrit integer,
recette double precision
); |
Si qq pouvais me donner un coup de mais pour comprendre et corriger mon erreur....
Merci d'avance.
A+