我最近急需VPD方案,我按照资料上的做法做好了,当在我SELECT的时候,老报不能执行策略函数。我查看了一下我的日志文件,错误如下:
Policy function execution error:
Logon user     : SEC
Table/View     : SBDBA.TP_GRJCDA
Policy name    : USER_SECTIRY_POLICY
Policy function: SEC.USER_SECTIRY_POLICY.GETUSERID
ORA-06550: 第 1 行, 第 59 列: 
PLS-00306: 调用 'GETUSERID' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 54 列: 
PL/SQL: Statement ignored可是我的策略函数根本就没有参数啊。
我的USER_SECTIRY_POLICY代码如下:
create or replace package user_sectiry_policy is
       function getuserid return varchar2;
end;create or replace package body user_sectiry_policy is
       function getuserid return varchar2
       is
       begin
            if sys_context('userenv','session_user') in ('SYS','SEC','SYSTEM') THEN
               RETURN '';
            ELSE
                RETURN 'ZHXGR='''||SYS_CONTEXT('USER_CONTEXT','USERID')||'''';
            END if;
       end;
end;最后我调用了dbms_rls.add_policy函数来分配我的策略函数我用SQL语句直接调用该策略函数执行没有任何问题。敬请各位大哥指点!小子不胜感激!!