【发布时间】:2020-10-01 12:43:48
【问题描述】:
我想创建一个视图,其中包含一个引用该视图所有者的列。类似的东西:
create or replace view scott.owner_v
as
select something() owner from dual;
注意:something() 不一定是函数或包引用。它可以是任何能提供所需输出的东西。
例如,在JEREMY 用户下查询select owner from scott.owner_v 将返回SCOTT,当我在HR 架构中编译此类视图时,我在owner 列中得到HR。
也许查询SCOTT.owner_v 以获取SCOTT 似乎很愚蠢,但在构建DWH 时我需要它来引用位于不同模式中的不同源。因此,我将动态构建一个“更高”级别的新视图,该视图从所有模式中收集数据,并带有额外的列,如 owner,它显示了数据源。我可以在构建这个“更高”的视图时放置这个专栏,但我想让它尽可能简单。
显然,我试图将以下参数放入视图中
- sys_context('USERENV','CURRENT_USER')
- sys_context('USERENV','CURRENT_SCHEMA')
- 用户
但它指的是当前登录的用户而不是视图的所有者。
任何帮助表示赞赏。
【问题讨论】:
-
如果您正在动态构建视图,为什么不能将所有者作为常量值包含在内 - 您应该已经在 CREATE 语句中根据需要(使用)该名称跨度>
-
我想将所有逻辑保存在保存源数据的“阶段”模式中。在下一个级别上,您只需查看 UNION 的所有来源。