È 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;