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 :

fonction RETURNS SETOF RECORD et count(): erreur


Sujet :

PostgreSQL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut fonction RETURNS SETOF RECORD et count(): erreur
    Bonjour, je voudrais faire une fonction qui renvoie le résultat d'un count() tout simple sur une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE FUNCTION hs_data_get_hs_new_count_from_old(INTEGER) RETURNS SETOF RECORD AS '
            DECLARE
             unigene ALIAS FOR $1;
             rec RECORD;
            BEGIN
             FOR rec IN SELECT COUNT(hs_new), hs_old FROM hs_l GROUP BY hs_old HAVING hs_old = unigene
             LOOP 
              RETURN NEXT rec;
             END LOOP;
              RETURN;
            END;
             ' LANGUAGE 'PLPGSQL';
    Puis j'effectue un select sur la fonction :

    select * from hs_data_get_hs_new_count_from_old('278468') as (compt int, uni int);

    Mais là j'ai une erreur :
    ERREUR: wrong record type supplied in RETURN NEXT
    CONTEXT: PL/pgSQL function "hs_data_get_hs_new_count_from_old" line 7 at return next

    Est-ce que vous verriez où peut bien être le vice ?

    En vous remerciant,

    C. Tobini

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    ta fonction accepte un argument de type integer, et tu lui passes une chaîne de caractère : essaye sans quotes autour de ta valeur (278468)
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Bonjour,

    En fait j'avais déjà essayé et ça ne change rien. Par expérience, j'ai l'impression qu'il y a un cast implicite de toute manière lorsque l'argument est un int et qu'on saisi un 'int'.

    C. Tobini

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Bon, j'ai trouvé la solution (qui est toute bête) après moultes recherches :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from hs_data_get_hs_new_count_from_old(278468) as (compteur bigint, unigene int);
    count() renvoie un bigint et non un int...

    Xo: après re-test, '278468' fonctionne bien dans tous les cas de figure sur un int en argument.

    Bonne journée,

    C. Tobini

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

Discussions similaires

  1. pb fonction plpgsql qui renvoi SETOF record
    Par bossLINDROS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 14/06/2007, 14h41
  2. [TP] Record et itération : erreur de syntaxe
    Par millenium dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 17/04/2006, 21h38
  3. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 10h08
  4. return setof text[]
    Par mereyj dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/04/2005, 09h29
  5. [LG]Resultat de fonction de type Record ?
    Par Mike888 dans le forum Langage
    Réponses: 10
    Dernier message: 24/01/2004, 22h48

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