si entiendo lo que quieres es poner tus funciones en el esquema public y que busquen o se ejecuten sobre las tablas de un esquema que estas separando por anios.
create or replace function prueba() returns int as $$ begin return (select count(id) from tablaA); end; $$ language plpgsql pero que la tabla "tablaA" sea leido del esquema sobre en que estas trabajando en ese momento. entonse ejecutas la funcion de esta manera. set search_path= 'public','2008'; -- va a buscar en el esquema public( donde esta la funcion) y sobre 2008 (donde esta la tabla) select * from prueba(); cuando quieras buscar sobre el esquema 2009 cambias el set search_path por 'public','2009' y de esa menera con todos los esquemas. -- Solo alcanzaras el conocimiento conociendo la ignorancia.