Depois de corrigir os bugs @Pavel apontou , também defina seu tipo de retorno corretamente, ou você deve fornecer uma lista de definição de coluna com cada chamada.
Esta chamada:
SELECT * FROM get_object_fields()
... assume que o Postgres sabe como expandir
*
. Como você está retornando registros anônimos, você recebe uma exceção:ERROR: a column definition list is required for functions returning "record"
Uma maneira (de várias) de corrigir isso é com
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 funções SQL da mesma forma.
Relacionado: