今天从Oracle介绍VPD的白皮书上看到一种说法,翻译过来是这样的:视图可根据上下文限制对数据的访问,例如,设想你的公司策略是员工只能在正常的工作时间查看员工的工资信息。你可以创建一个视图,并对这个视图增加限制使其只能在上午9:00到下午5:00访问。请问如何实现,谢谢?

解决方案 »

  1.   

    产生视图的时候加个where条件啊
    where to_char(sysdate,'hh24')>=9 and to_char(sysdate,'hh24')<=17
    这样时间不对就返回空集
      

  2.   

    SQL> select * from emp where sysdate between sysdate-0.1 and sysdate+0.1;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
          7369 SMITH      CLERK           7902 17-12月-80            800                    20
          7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
          7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
          7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
          7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
          7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
          7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
          7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
          7839 KING       PRESIDENT            17-11月-81           5000                    10
          7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
          7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
          7900 JAMES      CLERK           7698 03-12月-81            950                    30
          7902 FORD       ANALYST         7566 03-12月-81           3000                    20
          7934 MILLER     CLERK           7782 23-1月 -82           1300                    10已选择14行。SQL> select * from emp where sysdate between sysdate+0.1 and sysdate+0.2;
      

  3.   

    应该可以的吧。
    在创建设置上下文的包里进行控制,判断当前时间,如果不在指定的时间段内,raise一个异常,我没试过,呵呵。