创建限制用户访问特定时间的VIEW

时间:2012-03-20 01:30:22

标签: sql database oracle sqlplus

我正在尝试执行以下查询“创建一个视图,该视图将员工用户对订单表的访问限制为9:00到18:00之间的工作时间。 对员工用户的权限。“

但是我很挣扎,到目前为止我用的是:

   CREATE VIEW STAFF_RESTRICTORDERVIEW AS
   SELECT TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI:SS'), ORDERNUMBER, CUSTOMERNUMBER, DATEORDERPLACED, DELIVERYINSTRUCTION, SCHEDULEID, 
   FROM ORDERS
   WHERE STAFF_RESTRICTORDERVIEW (SYSDATE, 'DD-MM-YYYY HH24:MI:SS') NOT BETWEEN
   (SYSDATE, 'DD-MM-YYYY 09:00:00') AND (SYSDATE, 'DD-MM-YYYY 18:00:00')

如果上面的代码有效,那么我就可以添加以下内容:

  GRANT SELECT on STAFF_RESTRICTORDERVIEW TO 'STAFF_USER'

任何帮助将不胜感激,提前谢谢:)。

1 个答案:

答案 0 :(得分:3)

试试这个:

CREATE VIEW STAFF_RESTRICTORDERVIEW (
    current_sys_date, 
    ordernumber, 
    customernumber, 
    dateorderplaced,
    deliveryinstruction, 
    scheduleid
) AS
SELECT 
    sysdate, 
    ORDERNUMBER, 
    CUSTOMERNUMBER, 
    DATEORDERPLACED, 
    DELIVERYINSTRUCTION, 
    SCHEDULEID
 FROM ORDERS
 WHERE SYSDATE NOT BETWEEN trunc(sysdate) + 9/24 and trunc(sysdate) + 18/24

我相信如果你在9:00到18:00之间运行它会返回一个空的记录集。如果你想反过来,只想在这些小时之间获得记录,那么从最后一行中删除NOT。