procedure set_context(namespace varchar2, attribute varchar2, value varchar2, username varchar2 default null, client_id varchar2 default null);
-- Input arguments:
-- namespace
-- Name of the namespace to use for the application context
-- attribute
-- Name of the attribute to be set
-- value
-- Value to be set
-- username
-- username attribute for application context . default value is null.
-- client_id
-- client identifier that identifies a user session for which we need
-- to set this context.
--
--
context上下文的使用方式是:
1.创建上下文环境:
CREATE OR REPLACE CONTEXT US_CONTEXT USING SET_SECURITY_USER
2.将信息放到session中是:
CREATE OR REPLACE PROCEDURE "SET_SECURITY_USER" (USER_ID VARCHAR2) IS
BEGIN
DBMS_SESSION.set_context('US_CONTEXT','USER_ID',USER_ID);
END;
这么做是因为,context只能通过它的受信任的过程来设置(就是上面的using 子句 指定的过程)。
直接调用:DBMS_SESSION.set_context('USF_CONTEXT','USER_ID','ADMIN');
会报错:
ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at
"SYS.DBMS_SESSION", line 78
ORA-06512: at line 1
现在就可以通过:
SET_SECURITY_USER('ADMIN')
放入登陆用户ID
select sys_context('US_CONTEXT','USER_ID') from dual;