A mi se me ocurrió probar otra cosa con el insert...returning.
En la versión 8.2.4 me funciona, así que os lo envío por si es de
ayuda para alguien:
create or replace function fvalores(t text) returns void
language plpgsql
as $$
declare
estudio_id integer;
oferta_id integer;
begin
insert into estudio(nombre) values(nombestudio)
returning id into estudio_id;
insert into oferta(estudio) values(estudio_id)
returning id into oferta_id;
insert into clienteoferta(oferta) values(oferta_id);
return estudio_id;
end
$$;
--
Miguel Rodríguez Penabad