在后台扩展每个选择查询
Posted
技术标签:
【中文标题】在后台扩展每个选择查询【英文标题】:Extend every select query in the background 【发布时间】:2021-12-07 09:37:17 【问题描述】:是否可以扩展由 db 用户执行的每个选择查询?
例如用户将执行
select * from mytable
并在后台执行以下操作:
select * from mytable union all select * from different_schema.mytable
可以通过使用 VPD 函数的动态 where 子句来限制查询。
return '1=1'
我可以使用 VPD 扩展查询以同时从不同架构中选择数据吗?
return '1=1 union all select * from different_schema.' || tab;
上述示例出现以下错误:
ORA-28113: 策略谓词有错误
一种解决方法是创建一堆包含联合的动态生成的视图,但如果可能的话,我想使用 VPD 或类似的方法。
【问题讨论】:
【参考方案1】:不,您不能使用 VPD 执行此操作。 VPD 将为每个查询添加一个predicate
,这是对查询的where
子句的扩展。不能用于union
与另一个表。
我建议您使用其他方法:使用包含联合的视图并授予对这些视图而不是基表的适当权限。
【讨论】:
以上是关于在后台扩展每个选择查询的主要内容,如果未能解决你的问题,请参考以下文章