VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)

相关链接

DBMS_SESSION