[Oracle ADF] Row Level Security using VPD and ADF - Шаг 2 - подготавливаем и включаем VPD


Функцию нужно создавать под sysdba или под учетной с достаточным количеством прав!
Я создавал под пользователем 2 часа не мог понять где ошибка!


На сервере где расположена база. (Разумеется это linux).


$ cd /tmp


$ vi function.sql


CREATE OR REPLACE FUNCTION STORES_RESTRICT_ACCESS (
    p_schema in varchar2,
    p_object in varchar2)
    RETURN VARCHAR2
    AS

BEGIN
RETURN 'STORE in (580, 423)';
END;
/


Создать:


$ vi policy-enable.sql


begin
dbms_rls.add_policy
(object_schema => 'MY_SCHEMA',
object_name => 'STORE',
policy_name => 'STORE_VPD1',
policy_function => 'STORES_RESTRICT_ACCESS');
end;
/


$ sqlplus / as sysdba

@function.sql
@policy-enable.sql


Удалить

$ vi policy-disable.sql


begin
DBMS_RLS.DROP_POLICY('MY_SCHEMA', 'STORE', 'STORE_VPD1');
end;
/


Можно также выключить:


begin
DBMS_RLS.ENABLE_POLICY('MY_SCHEMA', 'STORE', 'STORE_VPD1', FALSE);
end;
/