Après avoir corrigé les bogues @Pavel l'a souligné , définissez également votre type de retour correctement, ou vous devez fournir une liste de définition de colonne avec chaque appel.
Cet appel :
SELECT * FROM get_object_fields()
... suppose que Postgres sait comment développer *
. Puisque vous renvoyez des enregistrements anonymes, vous obtenez une exception :
ERROR: a column definition list is required for functions returning "record"
Une façon (parmi plusieurs) de résoudre ce problème consiste à utiliser RETURNS TABLE
(Postgres 8.4+) :
CREATE OR REPLACE FUNCTION get_object_fields()
RETURNS TABLE (department_id int) AS
$func$
BEGIN
RETURN QUERY
SELECT department_id
FROM fact_department_daily
WHERE report_date = '2013-06-07';
END
$func$ LANGUAGE plpgsql;
Fonctionne de la même manière pour les fonctions SQL.
Connexe :