Sau khi sửa các lỗi @Pavel đã chỉ ra , cũng xác định loại trả lại của bạn đúng cách, hoặc bạn phải cung cấp danh sách định nghĩa cột cho mỗi lần gọi.
Cuộc gọi này:
SELECT * FROM get_object_fields()
... giả sử rằng Postgres biết cách mở rộng *
. Vì bạn đang trả lại các bản ghi ẩn danh, bạn sẽ có một ngoại lệ:
ERROR: a column definition list is required for functions returning "record"
Một cách (trong số nhiều cách) để khắc phục điều này là sử dụng 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;
Hoạt động cho các hàm SQL giống nhau.
Có liên quan: