Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2005, 03h18   #1
Invité régulier
 
Inscription : juin 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 12
Points : 5
Points : 5
Par défaut [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
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+
hpghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2005, 10h25   #2
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

ta procédure stockée est correcte, c'est la requête qui y fait appel qui ne l'est pas. Les fonctions de type setof doivent se trouver dans la clause FROM de la requête SQL :
Code :
SELECT * FROM fnc_stata_gpcat(1,1);
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2005, 12h14   #3
Invité régulier
 
Inscription : juin 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 12
Points : 5
Points : 5
Youpi !

Merci beaucoup GrandFather. Je vais pouvoir (ou devoir) bosser ce dimanche ;-)

Bonne journée
A+
hpghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h10.


 
 
 
 
Partenaires

Hébergement Web