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 :

[PostGres] - select * from mafonction() ?


Sujet :

PostgreSQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [PostGres] - select * from mafonction() ?
    Bonjour,

    je veux créer une fonction stockée qui renvoie un ensemble d'enregistrement,
    et pouvoir l'utiliser de manière simple du genre SELECT *, sans avoir à préciser les champs attendus.

    Je crée une fonction sous ce modèle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE OR REPLACE FUNCTION fn_get_id_from_serial(IN serial_id "varchar") 
      RETURNS SETOF record AS
    $BODY$
    SELECT id
    FROM table_prod
    WHERE $1 >= serial_id_low 
    AND $1 <= serial_id_high
    $BODY$
    LANGUAGE 'sql' VOLATILE;
    Allégée pour l'exemple, je dois renvoyer au final une multitude de champs et quelques jointures...


    Mon but étant de réutiliser plus tard cette fonction sour la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM fn_get_id_from_serial('001122334455');
    Aujourd'hui je dois explicitement déclarer les paramètres reçus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM fn_get_id_from_serial('$001122334455') AS (id INT4)
    Je n'arrive pas à mettre la main sur une syntaxe claire pour déclarer les paramètres dans la fonction et non dans la requête l'utilisant.

    Merci pour toute aide,
    Vincent.

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Finalement ceci fonctionne en ajouter toutes les colonnes en paramètre sortant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE OR REPLACE FUNCTION fn_get_id_from_serial(
    	IN serial_id "varchar",
    	OUT col1 INT4,
    	OUT col2 varchar,
    	OUT col3 varchar
    ) 
      RETURNS SETOF record AS
    $BODY$
    SELECT col1, col2, col3
    FROM table_prod
    WHERE $1 >= test_id_low 
    AND $1 <= test_id_high
    $BODY$
    LANGUAGE 'sql' VOLATILE;

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

Discussions similaires

  1. [COUNT] select ... from ... where count !
    Par tmcgrady dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2007, 17h29
  2. SELECT * FROM (Transform...pivot...)... ???
    Par davidso dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/01/2006, 18h04
  3. Réponses: 5
    Dernier message: 31/10/2005, 13h25
  4. un SELECT FROM ????
    Par tarik75 dans le forum Langage SQL
    Réponses: 18
    Dernier message: 17/07/2005, 12h04
  5. Equivalent du Select * from ::Fn_Fonction()
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/07/2004, 09h48

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