Después de corregir los errores señaló @Pavel , también defina su tipo de devolución correctamente, o debe proporcionar una lista de definición de columna con cada llamada.
Esta llamada:
SELECT * FROM get_object_fields()
... asume que Postgres sabe cómo expandir *
. Dado que está devolviendo registros anónimos, obtiene una excepción:
ERROR: a column definition list is required for functions returning "record"
Una forma (de varias) de arreglar esto es con 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;
Funciona para funciones SQL de la misma manera.
Relacionado: