Oracle: Probleme mit einem Cursor

Hallo,
ich bin noch relativ frisch in Sachen PL/SQL, Proceduren, etc.

Nun möchte ich eine Procedur mit einem Cursor schreiben.
Der Select, den ich dem Cursor zuweise funktioniert, wenn ich ihn in SQL*Plus ausführe ohne Probleme. Wenn ich jedoch:
CURSOR Kunden_cur is
SELECT A.Name, B.Gruppe from
tbl_Massnahme A, tbl_Massnahme B where
A.TRANS = B.TRANS AND
B.ID A.ID

Bekomme ich den Oracle-Fehler: ORA-00942: table or view does not exist

Ich habe im Internet gestöbert, dort stand was, dass keine Variablen als TabellenNamen nehmen kann, also nicht A. bzw. B… Aber ich kann die Abfrage ja nicht anders zusammen setzen…

Kann mir da einer helfen?

Verzweifelte Grüße

Sina

Hi!

CURSOR Kunden_cur is
SELECT A.Name, B.Gruppe from
tbl_Massnahme A, tbl_Massnahme B where
A.TRANS = B.TRANS AND
B.ID A.ID

Bekomme ich den Oracle-Fehler: ORA-00942: table or view does
not exist

Schreib mal das Schema bzw. den Tabelleneigentümer vor den Tabellennamen a la „hr.emplyoee“ statt „employee“
-> derEigentuemer.tbl_Massnahme A, derEigentuemer.tbl_Massnahme B

und schon wird’s funktionieren (falls natürlich auch die entsprechenden Berechtigungen gegranted wurden)

Ich habe im Internet gestöbert, dort stand was, dass keine
Variablen als TabellenNamen nehmen kann, also nicht A. bzw.
B… Aber ich kann die Abfrage ja nicht anders zusammen
setzen…

A und B sind keine Variablen, sondern Aliases, und bei dieser Abfrage brauchst Du Sie so dringend wie einen Bissen Brot, ansonsten wird Dir Oracle noch einen viel gemeineren Error vor den Kopf knallen

Grüße,
Tomh

Hallo Tom,
ah, ich denke es liegt an den Berechtigungen.
Aber wo um Himmelswillen kann ich einem Schema eine Berechtigung zuweisen die Tabelle XY zu lesen (ein Select auszuführen!!!)

Das mit dem Owner vorne dran hat leider nicht funktioniert, aber
ich denke auch, dass ich mit meinem neuen Schema keine expliciten Lese-Berechtigungen habe…
Aber wo sag ich Oracle, dass ich das darf? :smile:

Sina

Hallo Sina,
der Befehl für Rechtevergabe lautet

GRANT ON TO ;

Grüße
Peter