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…
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
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?