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 :
Cette fonction a été réalisé sous phppgadm. avec comme argument :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Valeur de sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part integer, integer
langage : plpgsql
Code : Sélectionner tout - Visualiser dans une fenêtre à part setof type_stata_gpcat
Mais je comprends pas pourquoi j'obtiens l'erreur suivante :
Pour information, voici mon type type_stata_gpcat :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);
Si qq pouvais me donner un coup de mais pour comprendre et corriger mon erreur....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 );
Merci d'avance.
A+
Partager