Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-00942:tabela ou view não existe (funciona quando um sql separado, mas não funciona dentro de uma função oracle)


Há uma grande chance de que os privilégios para selecionar da tabela1 tenham sido concedidos a uma função e a função tenha sido concedida a você. Privilégios concedidos a uma função não estão disponíveis para PL/SQL gravado por um usuário, mesmo que o usuário tenha recebido a função.

Você vê muito isso para usuários que receberam a função dba em objetos pertencentes a sys. Um usuário com função de dba poderá, digamos, SELECT * from V$SESSION , mas não poderá escrever uma função que inclua SELECT * FROM V$SESSION .

A correção é conceder permissões explícitas no objeto em questão diretamente ao usuário, por exemplo, no caso acima, o usuário SYS deve GRANT SELECT ON V_$SESSION TO MyUser;