CREATE OR REPLACE FUNCTION date_get_all_years() returns setof INT AS $$ DECLARE date_out record; BEGIN FOR date_out IN SELECT EXTRACT('YEAR' from transdate) AS year FROM acc_trans GROUP BY EXTRACT('YEAR' from transdate) ORDER BY year LOOP return next date_out.year; END LOOP; END; $$ language plpgsql; COMMENT ON FUNCTION date_get_all_years() IS $$ This function return each year inside transdate in transactions. $$;