Vaya problema nirvana... me pusiste a sudar, pero al fin lo conseguí.
Como vos decias, el problema de reconocer la palabra interval como una columna era jartisimo. ensayé mil cosas pero está parece funcionar al no hacer uso de la palabra interval.
Código sql:
Ver originalCREATE OR REPLACE FUNCTION fechas_dinamicas(nro_meses INTEGER) RETURNS TIMESTAMP AS
$BODY$
DECLARE
dia text;
nueva_fecha TIMESTAMP;
BEGIN
dia = nro_meses::text || ' month';
nueva_fecha = CURRENT_TIMESTAMP + quote_literal(dia)::INTERVAL;
RETURN nueva_fecha;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Afortunadamente, la función current_timestamp no requiere de dicha palabra y la sentencia permanece limpia.
Espero no tengas problemas con el campo timestamp. También puees convertir el resultado a date con la función to_date.
Espero te sirva.