Efter att ha åtgärdat felen påpekade @Pavel , definiera även din returtyp korrekt, eller så måste du tillhandahålla en kolumndefinitionslista med varje anrop.
Detta samtal:
SELECT * FROM get_object_fields()
... antar att Postgres vet hur man expanderar *
. Eftersom du returnerar anonyma poster får du ett undantag:
ERROR: a column definition list is required for functions returning "record"
Ett sätt (av flera) att fixa detta är 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;
Fungerar på samma sätt för SQL-funktioner.
Relaterat: