在Oracle中使用sysdate语句在特定时间之间限制表的查看

在Oracle中使用sysdate语句在特定时间之间限制表的查看,oracle,date-arithmetic,Oracle,Date Arithmetic,我需要在特定时间内将表上的视图限制为特定用户。我找不到任何关于如何做这件事的信息 任何帮助都将不胜感激。您可以使用策略强制执行此操作,或者更简单地授予用户对视图的访问权限,而不是对视图类似于以下内容的表的访问权限: create view data_vw as select * from data where (to_char(sysdate,'HH24MI') between '0800' and '1730' or user = 'CERTAINUSER' ); 在

我需要在特定时间内将表上的视图限制为特定用户。我找不到任何关于如何做这件事的信息

任何帮助都将不胜感激。

您可以使用策略强制执行此操作,或者更简单地授予用户对视图的访问权限,而不是对视图类似于以下内容的表的访问权限:

create view data_vw as
select * from data
where (to_char(sysdate,'HH24MI') between '0800' and '1730'
      or user = 'CERTAINUSER'
      );

在这两种情况下,用户仍然可以访问,但表/视图有时不会返回任何行。

类似的内容怎么样

CREATE OR REPLACE VIEW SOME_VIEW AS
  SELECT FIELD1, FIELD2, FIELD_ETC
    FROM REAL_TABLE
    WHERE USER = 'MY_BUDDY' AND
          TO_NUMBER(TO_CHAR(SYSDATE, 'HH')) BETWEEEN 8 AND 16
  UNION ALL
  SELECT NULL AS FIELD1, NULL AS FIELD2, NULL AS FIELD_ETC
    FROM DUAL
    WHERE USER <> 'MY_BUDDY' OR
          TO_NUMBER(TO_CHAR(SYSDATE, 'HH24')) NOT BETWEEEN 8 AND 16;
这将允许用户MY_BUDDY在每天08:00到16:59之间查看REAL_表中的数据


分享和享受。

我认为这应该是用户'CERTAINUSER'或sysdate_thing,而用户='CERTAINUSER'@Ben:也许,也许不是。我解释了在特定时间段内需要将表的视图限制为特定用户的意思:在特定时间段内,只有特定用户才能看到表;其他时候每个人都可以。然而,OP的意思可能是另一种解释。使用VPD可以在解决方案中提供更大的灵活性,因为您正在调用PL/SQL,以便针对基表向所有SQL添加where子句。