Cita:
Iniciado por gnzsoloyo Es usual ese tipo de conflictos. Las reglas de permisos de Oracle son algo exigentes.
Por lo pronto, el usuario con el que quieres ejecutar la SF debe tener permisos de EXECUTE sobre el esquema a que pertenezca la SF, y sobre el SF en sí (puedes ver un esquema y no sus rutinas almacenadas, o parte de ellas).
Además, si la SF está dentro de un package, deberá tener permisos para ejecutar ese package, y si el package contiene otros componentes (SP) que invoquen objetos de la base como sinonimos, vistas o tablas, deberá tener permisos sobre todos esos objetos.
De hecho, puedes crear un sinónimo sobre una tabla, por ejemplo, y darle a un usuario los permisos sobre el sinonimo. Pero si no se los das sobre el objeto que referncia el sinónimo, no funcionará.
Como te digo, Oracle es algo más exigente que otros DBMS en ciertos temas.
si me lo permites, te corrijo una cosilla :
y si el package contiene otros componentes (SP) que invoquen objetos de la base como sinonimos, vistas o tablas, deberá tener permisos sobre todos esos objetos
Eso no es correcto, si tienes permisos de execute sobre el package, heredas los permisos que tenga el owner del package sobre los objetos a los que referencia el codigo de las funciones o procedures que contiene ese package.
Si quieres que eso no sea así, deberás crear el package ( especificacion ) con la restriccion AUTHID CURRENT_USER.
Eso indica que ese package se ejecutará con los permisos que tiene el llamante, no con los del propietario del package