sql >> Base de Datos >  >> RDS >> Oracle

ORA-00942:la tabla o vista no existe (funciona cuando es un sql separado, pero no funciona dentro de una función de Oracle)

Existe una gran posibilidad de que los privilegios para seleccionar de la tabla 1 se hayan otorgado a una función y la función se le haya otorgado a usted. Los privilegios otorgados a un rol no están disponibles para PL/SQL escrito por un usuario, incluso si al usuario se le ha otorgado el rol.

Esto se ve mucho para los usuarios a los que se les ha otorgado el rol de dba en objetos propiedad de sys. Un usuario con rol dba podrá, por ejemplo, SELECT * from V$SESSION , pero no podrá escribir una función que incluya SELECT * FROM V$SESSION .

La solución es otorgar permisos explícitos sobre el objeto en cuestión directamente al usuario, por ejemplo, en el caso anterior, el usuario de SYS tiene que GRANT SELECT ON V_$SESSION TO MyUser;