Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Oracle9i Problem mit Prozedur

Empfohlene Antworten

Veröffentlicht

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?

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?

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.

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.

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:

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...

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!!! :(

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.