IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Probl�me dans une procedure


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    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 : 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+

  2. #2
    Expert confirm�
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    D�tails du profil
    Informations personnelles :
    �ge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par d�faut
    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 : S�lectionner tout - Visualiser dans une fen�tre � part
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    Par d�faut
    Youpi !

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

    Bonne journ�e
    A+

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probl�me de date dans une procedure
    Par travanca dans le forum IHM
    R�ponses: 8
    Dernier message: 22/04/2013, 08h25
  2. R�ponses: 3
    Dernier message: 11/03/2013, 15h04
  3. R�ponses: 1
    Dernier message: 25/01/2013, 16h25
  4. R�ponses: 5
    Dernier message: 26/12/2007, 23h20
  5. Probl�me avec 2 blocs IF dans une procedure
    Par asgard dans le forum Delphi
    R�ponses: 14
    Dernier message: 13/01/2007, 03h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo