Не совсем понятно, для чего Оракл ввел дополнительный параметр update_check в процедуре ADD_POLICY, его значение влияет только на операцию INSERT. На update не влияет, что, кстати, проитиворечит документации.Пример:
drop table doc;
create table doc (doc_name,distr) as select rownum||'-й район',rownum from all_tables where rownum<=10;
create or replace function FUNCT (object_schema IN VARCHAR2, object_name VARCHAR2)
RETURN VARCHAR2 as
begin
return 'DISTR=3';
end;
/
exec DBMS_RLS.DROP_POLICY('Q','DOC','MY_POLICY');
exec DBMS_RLS.ADD_POLICY('Q','DOC','MY_POLICY','Q','FUNCT','update',false);
update doc set doc_name='NEWNAME' where distr=2;
update doc set doc_name='NEWNAME' where distr=3;
select * from doc;
ведет себя так же, как и
exec DBMS_RLS.ADD_POLICY('Q','DOC','MY_POLICY','Q','FUNCT','update',true);
update doc set doc_name='NEWNAME' where distr=2;
update doc set doc_name='NEWNAME' where distr=3;
select * from doc;