Votre fonction n'a pas de sens, elle ne renvoie rien. Cela ressemble à une VUE, alors pourquoi ne pas en créer une ?
Edit :Vous avez utilisé les paramètres OUT ou RETURN TABLE() avec les paramètres :
CREATE OR REPLACE FUNCTION my_func(OUT o_id INT, OUT o_bar TEXT)
RETURNS SETOF RECORD AS
$$
BEGIN
RETURN QUERY SELECT id, bar FROM foo;
END;
$$
LANGUAGE plpgsql;
SELECT * FROM my_func();