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 :

Appel fonction dans une requête


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut Appel fonction dans une requête
    Bonjour,

    Je créé une fonction FCT() qui me retourne une chaine de caractères.

    Je veux invoquer cette fonction depuis une requête
    select COL2 from maTable where COL1 IN (select FCT());
    Ceci ne me retourne rien !!!!

    Alors que si j'exécute
    select FCT()
    ==> Ceci me retourne des données sous la forme 'VAL1', 'VAL2', 'VAL3', 'VAL4'
    Et si j'exécute
    select COL2 from maTable where COL1 IN ('VAL1', 'VAL2', 'VAL3', 'VAL4');
    ==> Ceci me retourne des données...
    Pour mon appel direct de la fonction dans la requête ne focntionne-t-il pas ?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    J'ai compris mon problème, ma fonction me retournant une chaine de caractères, elle me retourne
    "'VAL1', 'VAL2', 'VAL3', 'VAL4'"

    et non pas des chaines séparées par une virgule...

    Une idée pour y remédier ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    En fait quand je lui demande d'exécuter select COL2 from maTable where COL1 IN (select FCT()); il interprète select FCT() comme étant une chaine de caractères, mais ne l'exécute pas pour me retourner son résultat.

  4. #4
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 736
    Points
    1 736
    Par défaut
    Citation Envoyé par the java lover Voir le message
    select FCT()
    ==> Ceci me retourne des données sous la forme 'VAL1', 'VAL2', 'VAL3', 'VAL4'
    Le résultat est une seule chaîne de caractères, même si tu mets des virgules
    Pour pouvoir utiliser le résultat imbriqué dans un IN, il faut utiliser une vue et non pas une fonction
    Peux-tu créer une vue qui donne le même résultat que ta fonction ? Dans ton exemple, la vue renverrai 4 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'VAL1'
    'VAL2'
    'VAL3'
    'VAL4'
    et le IN imbriqué avec ta vue marcherait

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    Ma fonction est trop complexe pour la remplacer par une vue...

    Si ma fonction retourne un setof character varying, ceci sera-t-il équivalent ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    OK ça marche avec ma fonction qui me retourne un SETOF.

    Merci pour le tuyau...

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

Discussions similaires

  1. [AC-2000] appel d'une fonction dans une requête
    Par Cantalou dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/11/2009, 15h46
  2. [AIDE] Appeler fonction dans une requête
    Par Diablo_22 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/03/2009, 11h11
  3. Appel de fonction dans une requête
    Par ced dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/04/2007, 10h50
  4. Pb appel fonction dans une lib
    Par mamok dans le forum MFC
    Réponses: 14
    Dernier message: 01/02/2006, 18h40
  5. Réponses: 7
    Dernier message: 10/09/2005, 16h49

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