Efter at have rettet fejlene påpegede @Pavel , definer også din returtype korrekt, eller du skal angive en kolonnedefinitionsliste med hvert opkald.
Dette opkald:
SELECT * FROM get_object_fields()
... antager, at Postgres ved, hvordan man udvider *
. Da du returnerer anonyme poster, får du en undtagelse:
ERROR: a column definition list is required for functions returning "record"
En måde (af flere) at rette dette på er med 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;
Virker på samme måde for SQL-funktioner.
Relateret: