Erstens, ich habe diese Aufgabe durch das System erstellt:Orakel, den Zugriff auf eine Elementfunktion aus einer Sicht
create or replace
type type_client (
num int ,
username varchar(30),
balance int,
ta table_achat,
ref_admin ref type_admin,
member function get_prix_achat_total return int
);
Und ich habe eine Tabelle dieses Objekt durch das System erstellt:
create table table_client of type_client
Und eine Ansicht auch durch das System erstellt (es jeden Benutzer gibt seine richtige Linie von table_client wählen):
create view one_line_client as
select * from table_client
where username = (select user from dual);
Dann gebe ich einen Benutzer namens c##client1
-zum Beispiel- ein Privileg, um auf diese Ansicht zuzugreifen.
Mein Problem ist, kann der Benutzer c##client1
alle Daten vom Typ type_client
mit Ausnahme der Member-Funktion zugreifen kann;
Wenn ich
select balance from system.one_line_client;
oder
select num from system.one_line_client;
dann bekomme ich das richtige Ergebnis.
Aber wenn ich
tunselect olc.get_prix_achat_total() from system.one_line_client olc;
dann bekomme ich den Fehler:
ORA-00904: "OOO" "GET_PRIX_ACHAT_TOTAL": ungültige Kennung
00904. 00000 - „% s. : ungültige Kennung“
Off Topic, aber warum erstellen Sie Objekte im Schema SYSTEM? Schlecht. – OldProgrammer
bitte eine [mcve] angeben. – OldProgrammer