Po opravě chyb @Pavel upozornil , také definujte typ návratu správně, nebo musíte při každém volání poskytnout seznam definic sloupců.
Tento hovor:
SELECT * FROM get_object_fields()
... předpokládá, že Postgres ví, jak rozšířit *
. Protože vracíte anonymní záznamy, dostanete výjimku:
ERROR: a column definition list is required for functions returning "record"
Jedním ze způsobů (z několika), jak to vyřešit, je 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;
Funguje stejně pro funkce SQL.
Související: