Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00942:Tabelle oder Ansicht existiert nicht (funktioniert, wenn eine separate SQL, aber nicht innerhalb einer Orakelfunktion funktioniert)

Es besteht eine hohe Wahrscheinlichkeit, dass die Berechtigungen zum Auswählen aus Tabelle1 einer Rolle gewährt wurden und die Rolle Ihnen gewährt wurde. Berechtigungen, die einer Rolle gewährt wurden, sind für PL/SQL, das von einem Benutzer geschrieben wurde, nicht verfügbar, selbst wenn dem Benutzer die Rolle gewährt wurde.

Sie sehen dies häufig bei Benutzern, denen die dba-Rolle für Objekte gewährt wurde, die sys gehören. Ein Benutzer mit der dba-Rolle kann beispielsweise SELECT * from V$SESSION , kann aber keine Funktion schreiben, die SELECT * FROM V$SESSION enthält .

Die Lösung besteht darin, dem Benutzer explizite Berechtigungen für das fragliche Objekt direkt zu erteilen, zum Beispiel muss der SYS-Benutzer im obigen Fall GRANT SELECT ON V_$SESSION TO MyUser;