2012-03-20 86 views
1

我正在嘗試執行以下查詢「創建視圖,將員工用戶訪問訂單表的時間限制爲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' 

任何幫助,將不勝感激,在此先感謝:)。

+0

那麼它看起來像你缺少一個''',一個。 – 2012-03-20 01:32:27

+1

可以使用一些說明。這種聽起來像是大學/畢業學校的數據庫任務。問題:員工用戶如何連接到個人賬戶或共享用戶賬戶下的數據庫?訂單表是由某個共享用戶帳戶擁有的嗎?什麼是「適當的權限」? – 2012-03-20 02:12:02

回答

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。

+1

A-我不相信你想要'NOT'。如果時間早於上午9點或下午6點,您希望查詢返回0行。 – 2012-03-20 02:25:24

+0

比你,上面的代碼工作。謝謝大家的親切幫助,非常感謝。 – user1279780 2012-03-21 00:29:18

+0

很高興我能幫到你。如果它解決了您的問題,請接受我的答案,這是感謝SO上人們的最佳方式。 :) – 2012-03-21 00:40:03