Gracias por la ayuda de todos
Finalmente hice esta funcion que recibe la fecha y devuelve la fecha un mes despues o antes segun el parámetro Meses si es positivo o negativo respectivametne, asi aplica para todos los meses sin importar si son de 28,29,30 o 31 días...
Código:
FUNCTION FN_ADICIONA_MES (F_Entrada DATE, Mes NUMBER)
RETURN DATE AS
-- Recibe la fecha y la cantidad de meses que desea adicionar o restar
F_Salida DATE NULL;
DiaEntrada NUMBER(2);
UltimoDia NUMBER(2);
BEGIN
DiaEntrada := TO_NUMBER(TO_CHAR(F_Entrada,'DD'));
UltimoDia := TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(F_Entrada,Mes)),'DD'));
IF DiaEntrada > UltimoDia THEN
F_Salida := LAST_DAY ( ADD_MONTHS(F_Entrada,Mes) );
ELSE
F_Salida:= TO_CHAR(F_Entrada,'DD')||'/'||TO_CHAR(ADD_MONTHS(F_Entrada, Mes),'MM/RRRR');
END IF;
RETURN F_Salida;
END FN_ADICIONA_MES;