Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-28113:il predicato della politica contiene un errore

(domanda vecchia di un anno ma visto che l'ho trovata vado avanti e risponderò per qualcun altro...)

ORA-28113 significa semplicemente che quando la funzione della politica ha restituito una clausola where, l'SQL risultante ha avuto qualche errore. Puoi ottenere dettagli guardando il file di traccia. Inoltre, prova:

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

E poi aggiungi i risultati a una clausola WHERE come questa:

SELECT * FROM MYTABLE WHERE <results from above>;

E poi dovresti vedere la causa principale. Immagino che nel caso precedente "l'altro utente" non avesse né le variabili sys_context necessarie per creare la clausola where o l'accesso al trigger di accesso.

Come nota a margine, un altro problema che puoi incontrare qui è il riferimento circolare quando la tua funzione di politica fa riferimento alla propria tabella - idealmente mi aspetterei che una funzione di politica si aggiri all'interno della funzione di politica in modo da poter NON ESISTE, ecc. ma non lo fa Non sembra funzionare in questo modo.