このような単純な関数を作成しようとしましたが、機能しません。データは返されますが、ポリシーがない場合と同じです。
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 ポリシーで使用して、ユーザーがテーブルから選択するときに行のみを選択できるようにします。