El fallo se puede dar por varios motivos, para saber el error en concreto modifica el código de la función para que devuelva el mensaje de error.
Código:
create or replace function...
....
when others then
dbms_output.put_line( to_char(SQLCODE) || ' ' || SQLERRM );
end;
Saludos