SET_CONTEXT

该过程用于设置上下文里的一个属性的值

声明

procedure set_context(namespace varchar2,
                      attribute varchar2,
                      value varchar2,
                      username varchar2 default null,
                      client_id varchar2 default null);

结构

参数 说明
namespace 上下文名称
attribute 属性名称
value 属性值
username (暂不支持此特性)
client_id (暂不支持此特性)

说明

  • 不能调用此接口去修改数据库内置上下文 USERENV 的属性

  • 如果指定的上下文并不存在,会报错

  • 新设置的属性值,会覆盖掉旧的属性值

  • 在 ORACLE 数据库里,只有在创建上下文时指定的那个包内部,才有权限调用本接口去设置它的属性值

    目前神通数据库里没有这种权限检查

示例

--创建上下文
CREATE OR REPLACE CONTEXT CTT_TEST USING PRO_TEST;

--创建上下文所需函数
CREATE OR REPLACE PROCEDURE PRO_TEST(CTTNAME VARCHAR2, PARAM VARCHAR2, PVALUE VARCHAR2) AS
BEGIN
    DBMS_SESSION.SET_CONTEXT(CTTNAME, PARAM, PVALUE);
END;

/

--设置上下文属性值
EXEC PRO_TEST('CTT_TEST', 'PARAM0', 'HELLO WORLD');


--获取上下文属性值
SELECT SYS_CONTEXT('CTT_TEST', 'PARAM0') FROM DUAL;
SYS_CONTEXT(text)      |
-----------------------
HELLO WORLD            |
总数目:1

--删除上下文
DROP CONTEXT CTT_TEST;