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 : 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;
Cette fonction a été réalisé sous phppgadm. avec comme argument :
Valeur de sortie
langage : plpgsql

Mais je comprends pas pourquoi j'obtiens l'erreur suivante :

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 : 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
);
Si qq pouvais me donner un coup de mais pour comprendre et corriger mon erreur....

Merci d'avance.

A+