Po naprawieniu błędów @Pavel wskazał , określ także typ zwrotu poprawnie lub musisz dostarczyć listę definicji kolumn przy każdym wywołaniu.
Ta rozmowa:
SELECT * FROM get_object_fields()
... zakłada, że Postgres wie, jak rozwinąć *
. Ponieważ zwracasz anonimowe rekordy, otrzymujesz wyjątek:
ERROR: a column definition list is required for functions returning "record"
Jednym ze sposobów (z kilku), aby to naprawić, jest użycie 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;
Działa tak samo dla funkcji SQL.
Powiązane: