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 :

Erreur "SELECT INTO" dans une fonction


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut Erreur "SELECT INTO" dans une fonction
    Salut tout le monde, j'ai une procédure stockée dans laquelle je dois faire une 1ère requête et récupérer le nombre d'enregistrement dans une variable puis selon la valeur trouvée je dois effectuer un traitement spécifique.
    Voici le corps de ma procédure stockée :
    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
    CREATE OR REPLACE FUNCTION "theriaque"."get_the_spe_statut" (numeric) RETURNS "pg_catalog"."refcursor" AS
    $body$
    DECLARE
      IDSPE ALIAS FOR $1;  
      curRet REFCURSOR;  
    BEGIN
        OPEN curRet FOR 
        SELECT COUNT(*) INTO REC_COUNT
    	FROM SPAFS_SPECIALITE_AFSSAPS t1, 
             CDF_CODIF	              t2
    	WHERE  t1.SPAFS_RUBCDF_NUMERO_PK IN ('SP','14S','CPH')
    	AND t1.SPAFS_DATE_PK = (SELECT MAX(SPAFS_DATE_PK)
                             	FROM SPAFS_SPECIALITE_AFSSAPS
                            	WHERE  SPAFS_RUBCDF_NUMERO_PK IN ('SP','14S','CPH')
                            	AND    SPAFS_SP_CODE_FK_PK    = IDSPE)
    	AND t2.CDF_CODE_PK         = t1.SPAFS_CDF_CODE_DOC_FK_PK
    	AND t2.CDF_NUMERO_PK       = '25'
    	AND t1.SPAFS_SP_CODE_FK_PK = IDSPE ;
        RETURN curRet;
    /*IF w_count = 1 THEN
    Mais ça ne marche pas. Est ce quelqu'un pourrait m'indiquer comment faire pour résoudre ce problème.
    Merci d'avance.
    Cordialement.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Si tu veux juste le résultat d'un count(*), alors la fonction devrait renvoyer un entier et non un refcursor.
    le select count(*) met le résultat dans une variable rec_count mais elle n'est pas déclarée donc ça ne doit pas se compiler.
    une fonction basée sur ce modèle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    create function ...
    $$
    declare
     res integer;
    begin
     select count(*) into res FROM ...
     return res;
    end;
    $$
    ferait l'affaire semble-t-il.

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    Merci, c'est ce que j'avais besoin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Erreur en mettant un code dans une fonction
    Par jissey74 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/06/2014, 18h09
  2. Réponses: 1
    Dernier message: 10/05/2009, 02h07
  3. Erreur dans une fonction
    Par dark_vidor dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2006, 10h23
  4. Réponses: 2
    Dernier message: 11/08/2004, 15h01

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