Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-28113 :le prédicat de stratégie comporte une erreur

(question vieille d'un an mais depuis que je suis tombé dessus, je vais continuer et y répondre pour quelqu'un d'autre...)

ORA-28113 signifie simplement que lorsque votre fonction de politique a renvoyé une clause where, le SQL résultant a eu une erreur. Vous pouvez obtenir des détails en consultant le fichier de trace. Essayez également :

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

Et puis ajoutez les résultats à une clause WHERE comme ceci :

SELECT * FROM MYTABLE WHERE <results from above>;

Et puis vous devriez voir la cause première. Je suppose que dans le cas ci-dessus, "l'autre utilisateur" n'avait ni les variables sys_context requises pour créer la clause where, ni l'accès au déclencheur de connexion.

En remarque, un autre problème que vous pouvez rencontrer ici est la référence circulaire lorsque votre fonction de politique fait référence à sa propre table - idéalement, je m'attendrais à ce qu'une fonction de politique se contourne dans la fonction de politique afin que vous puissiez NE PAS EXISTE, etc. ça n'a pas l'air de fonctionner comme ça.