Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-28113:Richtlinienprädikat hat einen Fehler

(Jahre alte Frage, aber da ich darüber gestolpert bin, werde ich weitermachen und sie für alle anderen beantworten ...)

ORA-28113 bedeutet nur, dass die resultierende SQL einen Fehler hatte, als Ihre Richtlinienfunktion eine where-Klausel zurückgab. Details erhalten Sie, indem Sie sich die Ablaufverfolgungsdatei ansehen. Versuchen Sie auch:

select Select_Nhanvien('myschema','mytable') from dual;

Und hängen Sie dann die Ergebnisse an eine WHERE-Klausel wie diese an:

SELECT * FROM MYTABLE WHERE <results from above>;

Und dann sollten Sie die Ursache sehen. Ich vermute, im obigen Fall hatte der 'andere Benutzer' weder die sys_context-Variablen, die zum Erstellen der where-Klausel erforderlich sind, noch den Zugriff auf den Login-Trigger.

Nebenbei bemerkt, ein weiteres Problem, auf das Sie hier stoßen können, ist der Zirkelverweis, wenn Ihre Richtlinienfunktion auf ihre eigene Tabelle verweist. Idealerweise würde ich erwarten, dass sich eine Richtlinienfunktion innerhalb der Richtlinienfunktion selbst umgeht, sodass Sie NICHT EXISTIEREN usw. Scheint so nicht zu funktionieren.