Na het oplossen van de bugs @Pavel wees erop , definieer ook uw retourtype correct, of u moet bij elke oproep een kolomdefinitielijst opgeven.
Deze oproep:
SELECT * FROM get_object_fields()
... gaat ervan uit dat Postgres weet hoe *
. uit te breiden . Aangezien u anonieme records retourneert, krijgt u een uitzondering:
ERROR: a column definition list is required for functions returning "record"
Een manier (van meerdere) om dit op te lossen is met 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;
Werkt precies hetzelfde voor SQL-functies.
Gerelateerd: