你可以使用sys_context函数得到一些session参数值,同时你可以定义自己的context,下面分别进行介绍:
1. 使用sys_context得到session参数值,类似于userenv函数的用法:
具体语法如下:
select SYS_CONTEXT('NAMESPACE','PARAMETER') from dual;
oracle已经提供了一个namespace:userenv,而详细的parameter可以参见SQL Reference,下面仅举几个例子来进行说明:
--查找session id:
SELECT SYS_CONTEXT('USERENV','SESSIONID') FROM DUAL;
--查找session user:
SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL;
--查找db name:
SELECT SYS_CONTEXT('USERENV','DB_NAME') FROM DUAL;
2.定义自己的context
总体来说只需要三步:
1) 定义PACKAGE
create or replace package test_context as
procedure test (name in varchar2);
end;
/
create or replace package body test_context as
procedure test (name in varchar2)
is
begin
dbms_session.set_context('my_context','name',name);
end;
end;
/
需要注意的是set_context中的namespace(即'my_context')必须要与后面创建的context name相一致;
2) 定义Context
create or replace context my_context using test_context;
using的值就是前面定义的package name
3) 至此前期的准备工作已经完成,然后就可以在sqlplus或者以command windows模式执行命令
SQL> exec test_context.test('KKKK');
SQL> select sys_context('my_context','name') from dual;
结果为‘KKKK’
需要特别注意的是自定义的sys_context只限于在一个session,如果此session被kill掉,则select的结果为NULL。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13129975/viewspace-624256/
,如需转载,请注明出处,否则将追究法律责任。