Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-00942:tabella o vista non esiste (funziona quando un sql separato, ma non funziona all'interno di una funzione Oracle)

È molto probabile che i privilegi per selezionare da table1 siano stati concessi a un ruolo e che il ruolo sia stato concesso a te. I privilegi concessi a un ruolo non sono disponibili per PL/SQL scritto da un utente, anche se all'utente è stato concesso il ruolo.

Lo vedi molto per gli utenti a cui è stato concesso il ruolo dba su oggetti di proprietà di sys. Un utente con ruolo dba potrà, ad esempio, SELECT * from V$SESSION , ma non sarà in grado di scrivere una funzione che includa SELECT * FROM V$SESSION .

La correzione consiste nel concedere autorizzazioni esplicite sull'oggetto in questione direttamente all'utente, ad esempio, nel caso precedente, l'utente SYS deve GRANT SELECT ON V_$SESSION TO MyUser;