現在ログインしているユーザーが自分のレコードをscott.empテーブルに表示できないようにする関数を作成しようとしています。現在のユーザーに自分のレコードが表示されないようにしますか? VPD-ORACL12C
私はポリシーを実施する機能を書いています。現在、return文はreturn 'ename != CURRENT_USER';
ですが、これは機能しません。
新しい関数パラメータを追加する必要があるのか、return文を変更する必要があるのかわかりません。 return文に複数の引用符を入れると、エラーのある関数がコンパイルされます。私は行方不明の書式がありますか?
create or replace function self(
p_schema in varchar2,
p_object in varchar2)
return varchar2 as
begin
return 'ename != CURRENT_USER';
end;
/
begin
dbms_rls.add_policy
(object_schema => 'SCOTT',
object_name => 'EMP',
policy_name => 'self',
policy_function => 'self');
end;
/
'self'は、キーワードである - それはタイプで使われています。 Oracleではこれを使用することができますが、別の名前を使用する方が良いでしょう。どのように 'not_self'(これもまた真実です)はどうですか? – APC
@APCあなたは正しいです、命名規則lol –