sql >> Base de Datos >  >> RDS >> Oracle

ORA-28113:el predicado de la política tiene un error

(pregunta de hace un año, pero como me topé con ella, seguiré adelante y la responderé para cualquier otra persona...)

ORA-28113 simplemente significa que cuando su función de política devolvió una cláusula where, el SQL resultante tuvo algún error. Puede obtener detalles consultando el archivo de rastreo. Además, intente:

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

Y luego agregue los resultados a una cláusula WHERE como esta:

SELECT * FROM MYTABLE WHERE <results from above>;

Y entonces deberías ver la causa raíz. Supongo que en el caso anterior, el 'otro usuario' no tenía las variables sys_context requeridas para construir la cláusula where ni acceso al activador de inicio de sesión.

Como nota al margen, otro problema con el que puede encontrarse aquí es la referencia circular cuando su función de política hace referencia a su propia tabla; idealmente, esperaría que una función de política se omita a sí misma dentro de la función de política para que pueda hacer NO EXISTE, etc. Parece que no funciona de esa manera.