CREATE CONTEXT
功能描述
Vastbase支持在Oracle兼容模式下使用CREATE CONTEXT语法创建用户自定义的namespace,默认创建的context为当前用户可见。也支持用户指定创建全局context,即当前namespace下的属性值对其他用户可见。
注意事项
该特性仅在数据库兼容模式为Oracle时能够使用(即创建DB时DBCOMPATIBILITY='A'),在其他数据库兼容模式下不能使用该特性。
CONTEXT保存在全局结构中,且创建的namespace必须全局唯一。
支持版本:
- V2.2 Build 10 (Patch No.11)及以后补丁版本。
- V2.2 Build 13及以后版本。
语法格式
CREATE [ OR REPLACE ] CONTEXT namespace USING
[ schema. ] package/function [ACCESSED GLOBALLY];
参数说明
schema
模式名。
package
指定schema所属的package。如果省略schema,则数据库将使用当前schema。
function
指定schema所属的function。如果省略schema,则数据库将使用当前schema。
namespace
指定要创建的上下文命名空间的名称。
ACCESSED GLOBALLY
指定设置context为全局变量,此时其他用户可以查询该命名空间下的属性值。
示例
前置步骤: 创建并切换至兼容模式为Oracle的数据库db_oracle。
CREATE DATABASE db_oracle dbcompatibility='A';
\c db_oracle
1、创建存储过程,其中调用了DBMS_SESSION.set_context,在用户自定义的命名空间下设置属性值为VALUE
。
CREATE OR REPLACE FUNCTION set_context_func_1(namespace IN VARCHAR2,
attribute IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
DBMS_SESSION.SET_CONTEXT(namespace,attribute,'VALUE');
RETURN 'SUCCESS';
END;
/
2、创建上下文并赋值。
CREATE OR REPLACE CONTEXT test_context USING set_context_func_1;
3、通过存储过程为命名空间设置属性值。
SELECT set_context_func_1('test_context', 'ATTR1') from dual;
返回结果为如下,表示设置成功:
set_context_func_1
--------------------
SUCCESS
(1 row)
4、查看context的属性值。
select sys_context('test_context','ATTR1') from dual;
查询结果为:
sys_context
-------------
VALUE
(1 row)