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

Requêtes PostgreSQL Discussion :

Eliminer les () du retour d'une fonction [9.3]


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 27
    Points
    27
    Par défaut Eliminer les () du retour d'une fonction
    Bonjour,

    Table AIRPORTS :
    Nom : AIRPORTS.jpg
Affichages : 91
Taille : 24,9 Ko

    Fonction f_test :
    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
     
    CREATE OR REPLACE FUNCTION f_test
    RETURNS SETOF varchar AS
    $body$
    DECLARE
      vc cursor for select z_rowid from airports where cntcod='BE';
    BEGIN
      FOR vr IN vc LOOP
        RETURN NEXT vr;
      END LOOP;  
      RETURN;
    END;
    $body$
    LANGUAGE 'plpgsql'
    VOLATILE
    CALLED ON NULL INPUT
    SECURITY INVOKER
    COST 100 ROWS 1000;
    Résultat :
    Nom : SELECT_1.jpg
Affichages : 90
Taille : 11,9 Ko

    On peut remarquer les () qui vont me poser des problèmes dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from airports where z_rowid in (select f_test)
    qui ne retourne aucun résultat.

    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from airports where '('||z_rowid||')' in (select f_test)
    retourne le résultat escompté mais ce n'est pas le top car, en cas de table comportant énormément de records, cela prend un temps considérable.

    Quelqu'un a t-il une idée ?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Ce que retourne un curseur, quand il est parcouru, c'est un "enregistrement" (une ligne complète) et pas une valeur scalaire, même s'il n'y a qu'une seule donnée dans l'enregistrement en question. D'où les parenthèses.

    Pour vous en débarrasser, essayez plutôt comme ça dans votre fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BEGIN
      FOR vr IN vc LOOP
        RETURN NEXT vr.z_rowid;
      END LOOP;  
      RETURN;
    END;
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 27
    Points
    27
    Par défaut
    Ca fonctionne


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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/02/2008, 14h35
  2. [XML][XSLT][debutant]retour d'une fonction
    Par maxvador dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 30/03/2006, 14h12
  3. recuperer en php le retour d'une fonction plsql
    Par gismoblue dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/03/2006, 16h39
  4. PL/SQL retour d'une fonction
    Par aaronw dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/12/2005, 13h25
  5. [Oracle 9.1] Types de retour d'une fonction PL/SQL
    Par ftrifiro dans le forum PL/SQL
    Réponses: 8
    Dernier message: 12/10/2005, 16h54

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