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.