获取 Oracle 中当前视图的所有者
Get owner of the current view in Oracle
我想创建一个视图,其中包含一个引用此视图所有者的列。类似的东西:
create or replace view scott.owner_v
as
select something() owner from dual;
注意:something()
不一定是函数或包引用。它可以是提供所需输出的任何内容。
因此,在 JEREMY
用户下查询 select owner from scott.owner_v
,例如,将 return SCOTT
,当我在 HR
模式中编译这样的视图时,我得到 HR
在 owner
列中。
查询 SCOTT.owner_v
以获得 SCOTT
似乎很愚蠢,但我需要它来构建 DWH,指的是位于不同模式中的不同来源。因此,我将动态构建一个处于“更高”级别的新视图,该视图从所有模式中收集数据,这些模式具有额外的列,例如 owner
,它显示了数据源。我可以在构建这个“更高”视图时放置此专栏,但我希望它尽可能简单。
显然,我尝试将以下参数放入视图中
- sys_context('USERENV','CURRENT_USER')
- sys_context('USERENV','CURRENT_SCHEMA')
- 用户
但它指的是当前登录的用户,而不是视图的所有者。
感谢任何帮助。
尝试
select owner from all_views where view_name = 'OWNER_V';
and/or 一些替代方案(USER_VIEWS
、DBA_VIEWS
、ALL_OBJECS
、...)。
只需创建 returns 拥有所有模式中的模式的本地函数,您要在其中创建视图:
create or replace function local_obj_owner return varchar2 as
begin
return $$PLSQL_UNIT_OWNER;
end;
/
然后将其添加到您的视图中:
create view test_view as
select
local_obj_owner as view_owner,
dummy
from dual;
我想创建一个视图,其中包含一个引用此视图所有者的列。类似的东西:
create or replace view scott.owner_v
as
select something() owner from dual;
注意:something()
不一定是函数或包引用。它可以是提供所需输出的任何内容。
因此,在 JEREMY
用户下查询 select owner from scott.owner_v
,例如,将 return SCOTT
,当我在 HR
模式中编译这样的视图时,我得到 HR
在 owner
列中。
查询 SCOTT.owner_v
以获得 SCOTT
似乎很愚蠢,但我需要它来构建 DWH,指的是位于不同模式中的不同来源。因此,我将动态构建一个处于“更高”级别的新视图,该视图从所有模式中收集数据,这些模式具有额外的列,例如 owner
,它显示了数据源。我可以在构建这个“更高”视图时放置此专栏,但我希望它尽可能简单。
显然,我尝试将以下参数放入视图中
- sys_context('USERENV','CURRENT_USER')
- sys_context('USERENV','CURRENT_SCHEMA')
- 用户
但它指的是当前登录的用户,而不是视图的所有者。
感谢任何帮助。
尝试
select owner from all_views where view_name = 'OWNER_V';
and/or 一些替代方案(USER_VIEWS
、DBA_VIEWS
、ALL_OBJECS
、...)。
只需创建 returns 拥有所有模式中的模式的本地函数,您要在其中创建视图:
create or replace function local_obj_owner return varchar2 as
begin
return $$PLSQL_UNIT_OWNER;
end;
/
然后将其添加到您的视图中:
create view test_view as
select
local_obj_owner as view_owner,
dummy
from dual;