Det finns en stor chans att privilegierna att välja från tabell1 har beviljats en roll, och rollen har beviljats till dig. Behörigheter som tilldelats en roll är inte tillgängliga för PL/SQL skriven av en användare, även om användaren har beviljats rollen.
Du ser detta mycket för användare som har fått rollen dba på objekt som ägs av sys. En användare med dba-roll kommer att kunna, säg, SELECT * from V$SESSION
, men kommer inte att kunna skriva en funktion som inkluderar SELECT * FROM V$SESSION
.
Korrigeringen är att ge användaren explicita behörigheter för objektet i fråga direkt, till exempel, i fallet ovan måste SYS-användaren GRANT SELECT ON V_$SESSION TO MyUser;