1.oracle中有默认创建的上下文叫做:userenv(user environment)
比如:SYS_CONTEXT(‘USERENV’,‘CURRENT_USER’)
2.除了默认创建的,还可以自定义上下文,用以下语句:
DBMS_SESSION.SET_CONTEXT ( namespace VARCHAR2, attribute VARCHAR2, value VARCHAR2, username VARCHAR2, client_id VARCHAR2 );
前面三个参数是必填,后面两个默认为null
Namespace:要创建的上下文的名称
Attribute:上下文里面包含的属性
Value:为上下文传入的值。
3.创建上下文
A.创建与上下文相关的过程,也可以用packge
Create procedure xx_CONTEXT (SET_KEY varchar2,SET_VALUE VARCHAR2)
as
begin
dbms_session.set_context(‘SELF_CONTEXT’, SET_KEY, SET_VALUE);
end;
SELF_CONTEXT :自定义的上下文的名称
B. 创建上下文:
create or replace context SELF_CONTEXT using xx_CONTEXT;
using 后面是使用的过程名称
C.给上下文赋值
Begin
xx_CONTEXT(‘self_name’,’测试测试’);
end;
D.引用上下文,在查询中使用以下作为值来使用
select SYS_CONTEXT ('SELF_CONTEXT’, ’ self_name ') from dual;
查询结果:测试测试
4.注意:经测试,在同一个库中,只能创建并使用一个自定义的相同名称的上下文。在多个用户下创建多个相同的上下文会冲突