Setelah memperbaiki bug @Pavel menunjukkan , juga tentukan jenis pengembalian . Anda dengan benar, atau Anda harus memberikan daftar definisi kolom dengan setiap panggilan.
Panggilan ini:
SELECT * FROM get_object_fields()
... mengasumsikan bahwa Postgres tahu cara memperluas *
. Karena Anda mengembalikan catatan anonim, Anda mendapatkan pengecualian:
ERROR: a column definition list is required for functions returning "record"
Salah satu cara (dari beberapa) untuk memperbaikinya adalah dengan 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;
Bekerja untuk fungsi SQL sama saja.
Terkait: