Veröffentlicht 27. Mai 200322 j Hallo, in der Firma sind wir von Oracle8 auf Oracle9 umgestiegen. Dabei hat sich ein Problem aufgetan: Ich hatte vor zwei Wochen eine Prozedur geschrieben, die eine Auswertung der Datenbank vornimmt. Dabei wird auf die Tabelle dba_extents zugegriffen. Aber plötzlich funktioniert die Prozedur nicht mehr und es kommt folgender Fehler: "PL/SQL: ORA-00942: Tabelle oder View nicht vorhanden". Schreibe ich SELECT * FROM dba_extents im SQL-Fenster (ich benutze TOAD), funktioniert alles bestens, aber wenn ich CREATE OR REPLACE PROCEDURE Test_Proc IS BEGIN SELECT * FROM dba_extents; END Test_Proc; / im Prozedur-Editor schreibe, gibt er mir den oben genannten Fehler. Meine Vermutung ist, ein Berechtigungsproblem. Aber wie kann es behoben werden?
27. Mai 200322 j hi also ich würde auch im moment auf ein berechtigungsproblem tippen. hast du admin-zugriff zur verfügung? kannst du berechtigungen vergeben? hast du die berechtigungen ggf. schon mal überprüft? hast du enterprise manager oder so zur verfügung?
27. Mai 200322 j Hast du Admin-Zugriff zur Verfügung? - Ja, aber nicht unter dem Schema, wo diese Prozedur liegt. Kannst du berechtigungen vergeben? - Ja. Hast du die Berechtigungen ggf. schon mal überprüft? - Nein, welche sollte der Benutzer denn haben? Hast du Enterprise Manager oder so zur Verfügung? - Ja, DBA-Studio.
27. Mai 200322 j hab gerade mal nachgeschaut. also ich hab meinem user: tester einfach select berechtigung auf die view (ansicht) gegeben. geht auch mit dem sql-befehl: ***************** REVOKE SELECT ON "SYS"."DBA_EXTENTS" FROM "TESTER" GRANT SELECT ON "SYS"."DBA_EXTENTS" TO "TESTER" WITH GRANT OPTION ***************** sag mal bescheid obs funktioniert hat.
27. Mai 200322 j Ich krieg echt'n Affen! Der Benutzer hat schon die Berechtigung, alle Tabellen zu selektieren! Aber ich hab mal was anderes probiert: Als SYS hab ich das hier geschrieben: CREATE OR REPLACE PROCEDURE Test_Proc IS BEGIN SELECT * FROM dba_extents; END Test_Proc; /Da gibt der mir diesen Fehler hier (mit Verweis auf Zeile 3): PLS-00428: In dieser SELECT-Anweisung wird eine INTO-Klausel erwartet Wenn ich diese Zeile wieder einfach als Befehl absetze, klappt's. Ich raff das nicht! :confused:
27. Mai 200322 j Stimmt. In pl/sql muss in der select-Anweisung ein into drin sein. Wo sollte er auch sonst mit den selektierten Daten hin??? select spalte into variable from tabelle where .... Also Variable deklarieren unter Declare ganz am Anfang. Das dürfte dein letztes Problem zumindest beheben. Das ertse schien aufgrund der Berechtigung zu sein. Kann ich von hier aus aber auch ned sagen...
27. Mai 200322 j Original geschrieben von The_red_one Stimmt. In pl/sql muss in der select-Anweisung ein into drin sein. Wo sollte er auch sonst mit den selektierten Daten hin??? Mjein, ich kann doch einfach Daten auswählen ohne sie irgendwo zu speichern, das gibt normalerweise keinen Fehler. Ist eben nur unsinnig. Mir ging es ja auch nur darum, zu testen, ob die Berechtigung dort stimmt. Ich meine, SYS muss doch wohl die Berechtigungen haben um so eine Tabelle zu selektieren, oder?! HILFE!!!
27. Mai 200322 j axo sorry. das es klappt wenn du den befehl so absetzt hab ich überlesen dann muss ich auch erstnoch mal gucken *testdatenbankwiederhochfahr*
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.