Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-28113:o predicado da política tem erro


(pergunta de um ano, mas desde que me deparei com isso, vou em frente e respondo para qualquer outra pessoa ...)

ORA-28113 significa apenas que quando sua função de política retornou uma cláusula where, o SQL resultante teve algum erro. Você pode obter detalhes examinando o arquivo de rastreamento. Tente também:
select Select_Nhanvien('myschema','mytable') from dual;

E, em seguida, anexe os resultados a uma cláusula WHERE como esta:
SELECT * FROM MYTABLE WHERE <results from above>;

E então você deve ver a causa raiz. Suponho que, no caso acima, o 'outro usuário' não tinha as variáveis ​​sys_context necessárias para criar a cláusula where ou acesso ao gatilho de login.

Como uma observação lateral, outro problema que você pode encontrar aqui é a referência circular quando sua função de política faz referência à sua própria tabela - idealmente, eu esperaria que uma função de política se contorne dentro da função de política para que você possa NÃO EXISTIR, etc, mas não t parecem funcionar dessa maneira.