代码之家  ›  专栏  ›  技术社区  ›  Rene

Oracle VPD如何引用表

  •  2
  • Rene  · 技术社区  · 14 年前

    我正在努力解决以下问题。我想限制对使用Oracle VPD的表的访问。在select policy函数返回的where子句中,我需要对子查询中的表进行引用,如下所示:

    select * from Table t1
    where not exists (select 1 from Table t2 where t2.name=t1.name and t2.date=t1.date)
    

    (这个例子除了说明问题外没有什么意义)

    我无法控制查询的选定部分。

    select * from Table t1
    

    该表可以有任何别名,也可以没有别名。因此,我不知道如何引用where子句中的表。 有办法绕过这个吗?

    (Oracle 10GR2)

    1 回复  |  直到 14 年前
        1
  •  0
  •   Tony Andrews    14 年前

    我认为您需要使用NOT IN:

    (name, datecol) not in (select name, datecol from table2)