【发布时间】:2012-07-24 18:59:37
【问题描述】:
如何使用 select 语句从数据库中查找架构(用户)名称,或者是否有可用的内置函数?
我正在使用以下包来编译架构中的所有无效对象,因此我想使用返回架构名称的 select 语句或函数,而不是硬编码架构名称。
DBMS_UTILITY.compile_schema('SCOTT');
谢谢
【问题讨论】:
如何使用 select 语句从数据库中查找架构(用户)名称,或者是否有可用的内置函数?
我正在使用以下包来编译架构中的所有无效对象,因此我想使用返回架构名称的 select 语句或函数,而不是硬编码架构名称。
DBMS_UTILITY.compile_schema('SCOTT');
谢谢
【问题讨论】:
我猜,USER 系统变量将对应您需要的内容,如果“我的架构”对应于“我的用户”,what it usually does:
declare
u varchar2(100);
begin
select user into u from dual;
DBMS_UTILITY.compile_schema(u);
end;
或者没有 PL/SQL 块
DBMS_UTILITY.compile_schema(user);
【讨论】:
DBMS_UTILITY.compile_schema(user); 应该可以正常工作
Oracle DB 中的模式是用户,所以如果你想获取所有模式,你需要使用 dba_users 表:
SELECT USERNAME
FROM DBA_USERS;
请记住,这是一个系统表,因此需要适当的用户授权。
如果需要当前用户,可以使用 USER_USERS 视图。请参阅here 了解更多信息。
希望这会有所帮助!
【讨论】: