Я попытался создать простую функцию, подобную этой, но она не работает. Данные возвращаются, но это так же, как если бы не было политики.
CREATE OR REPLACE FUNCTION test (schema in varchar2, tab in varchar2)
RETURN varchar2 AS
predicate varchar2(4000);
pre2 VARCHAR2(2000);
BEGIN
pre2 := sa_session.SA_USER_NAME('policy');
predicate := '"USER" = '''|| pre2 ||'''';
return (predicate);
END test;
/
Я буду использовать эту функцию с политикой VPD, поэтому, когда пользователь выбирает из таблицы, он может выбрать только свою строку.
NULL
? Что происходит, когда вы выполняете запросSELECT sa_session.sa_user_name('policy') FROM DUAL
из SQLPlus (или Toad или SQL Developer)? - person Ed Gibbs   schedule 12.06.2013policy
? Кроме того, вы передаете две ненужные переменные в свою функцию... - person Ben   schedule 12.06.2013