我想從包中定義的函數內部調用SYS.DBMS_RLS.ENABLE_POLICY()。 但它顯示了以下錯誤:在函數內調用DBMS_RLS.ENABLE_POLICY?
Error(19,16): PLS-00201: identifier 'SYS.DBMS_RLS' must be declared
代碼:
CREATE OR REPLACE PACKAGE BODY foopackage IS
FUNCTION foobar RETURN t_table PIPELINED IS
BEGIN
EXECUTE(SYS.DBMS_RLS.ENABLE_POLICY(-- error in this line
object_schema => 'foo',
object_name => 'bar',
policy_name =>'bar2',
enable => FALSE
));
-- some more code
EXECUTE(SYS.DBMS_RLS.ENABLE_POLICY(-- error in this line
object_schema => 'foo',
object_name => 'bar',
policy_name =>'bar2',
enable => TRUE
));
RETURN;
END;
END foopackage;
我同意賈斯汀:以編程方式關閉RLS策略是非常糟糕的做法。如果你需要運行一些不受政策約束的代碼,那麼你需要有一個特殊的用戶,並有適當的豁免。 – APC
創建使用應用該策略的同一個表的策略謂詞時,要走的路是什麼? – blaze
如何繞過功能進入策略功能? – blaze