我在Oracle 10g数据库中有一个PL/SQL包,我想编写一个函数,它返回包(以及函数)定义的模式的名称.任何人都知道如何做到这一点?
create function xcurr return varchar2 is
v_curr varchar2(32);
begin
SELECT SYS_CONTEXT ('USERENV', 'CURRENT_USER') into v_curr from dual;
return v_curr;
end;
Run Code Online (Sandbox Code Playgroud)
只要PL/SQL对象没有AUTHID CURRENT_USER,这就可以工作.
来自Oracle 10g CURRENT_USER,在Gary Myers的回答中使用,已被弃用.Oracle建议您改为使用SESSION_USER参数,其中:
对于企业用户,返回架构.对于其他用户,返回用于对当前用户进行身份验证的数据库用户名.该值在整个会话期间保持不变.
我会使用CURRENT_SCHEMA.如果发出ALTER SESSION SET CURRENT_SCHEMA语句,则两者之间存在细微差别,因为CURRENT_SCHEMA会发生更改.
也没有必要从双重选择; 您可以将SYS_CONTEXT的返回值直接赋给变量.
DECLARE
v_current_schema varchar2(30);
BEGIN
v_current_schema := SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA');
dbms_output.put_line('I am using the schema [' || v_current_schema || ']');
END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4973 次 |
| 最近记录: |