2012-07-24 60 views
1

如何使用select语句从数据库中查找模式(用户)名称,或者是否存在可用的内置函数?从数据库获取模式(用户)名称

我正在使用下面的软件包编译我的模式中的所有无效对象,所以我不想使用硬编码模式名称,而是使用返回模式名称的select语句或函数。

DBMS_UTILITY.compile_schema('SCOTT'); 

感谢

回答

2

我想,在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); 
+0

谢谢,这真的很有帮助。 – user75ponic 2012-07-24 08:14:24

+0

不需要PL/SQL块:'DBMS_UTILITY.compile_schema(user);'应该可以正常工作 – 2012-07-24 10:55:32

+0

@a_horse_with_no_name:已更新 – 2012-07-24 10:59:34

0

Oracle DB中的模式是用户,所以如果你想利用你需要使用DBA_USERS表中的所有模式:

SELECT USERNAME 
FROM DBA_USERS; 

请记住,这是一个系统表,所以适当的用户授予是必要的。

如果您需要当前用户,则可以使用USER_USERS视图。有关更多信息,请参阅here

希望这会有所帮助!

相关问题