Función SQL para obtener el índice de la última ocurrencia de un carácter (o cadena) dentro de una cadena.

create or replace function lastIndexOf(cadena in varchar2, caracter in varchar2)
return number
/*
  Procedure que devuelve la posición de la última aparición de "caracter"
  en la "cadena".
  "caracter" puede ser una cadena también.
*/
is
  posx number := 1;
  posy number := 0;
begin

     if (length(cadena) > 0) then

        posy := instr(cadena,caracter,posx);

        while (posy <= length(cadena) and posy > 0) loop

              posx := posy+1;
              posy := instr(cadena,caracter,posx);

        end loop;

        return posx-1;
     else
        return 0;
     end if;
end;