Dopo aver corretto i bug @Pavel ha sottolineato , definisci anche il tuo tipo di reso correttamente, oppure devi fornire un elenco di definizioni di colonna con ogni chiamata.
Questa chiamata:
SELECT * FROM get_object_fields()
... presuppone che Postgres sappia come espandere *
. Poiché stai restituendo record anonimi, ottieni un'eccezione:
ERROR: a column definition list is required for functions returning "record"
Un modo (di molti) per risolvere questo problema è con 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;
Funziona allo stesso modo per le funzioni SQL.
Correlati: