基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
CREATE CONTEXT
更新时间:2026-07-15 20:42:46
描述
CREATE CONTEXT 语句可以为上下文(一组应用程序定义的属性,用于验证和保护应用程序)创建命名空间,还可以将命名空间与外部创建的用来设置该上下文的包相关联。
用户使用指定包中的 DBMS_SESSION.SET_CONTEXT 过程来设置或重置上下文的属性。
注意
要创建上下文命名空间,您必须具有 CREATE ANY CONTEXT 系统权限。
语法
CREATE [ OR REPLACE ] CONTEXT namespace
USING [ schema. ] package_name
[ INITIALIZED { EXTERNALLY | GLOBALLY }
| ACCESSED GLOBALLY
]
语法说明
| 关键字 | 说明 |
|---|---|
| OR REPLACE | 使用不同的包重新定义现有的上下文命名空间。 |
| namespace | 指定要创建或修改的上下文命名空间的名称。上下文命名空间始终存储在 SYS Schema 中。 |
| schema | 指定该包所在的 Schema。如果省略 Schema,则数据库使用当前的 Schema。 |
| package_name | 指定在用户当前会话的命名空间下设置或重置上下文属性的 PL 包。 |
| ACCESSED GLOBALLY | 表示命名空间中设置的任何应用程序上下文都可以在整个实例中被访问。此设置允许多个会话共享应用程序属性。 |
示例
创建上下文命名空间
dev_context。obclient> CREATE OR REPLACE CONTEXT dev_context USING SYS.DBMS_SESSION ACCESSED GLOBALLY;使用
SYS_CONTEXT函数基于此上下文控制数据访问。如下示例中,emp_mgmt包已将属性deptno定义为指定的部门标识符。您可以通过创建一个基于deptno值的视图来限制访问基表员工数据。-- 首先创建 emp 表 obclient> CREATE TABLE emp ( empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) ); -- 创建基于上下文的视图 obclient> CREATE VIEW dev_emp_view AS SELECT * FROM emp WHERE deptno = SYS_CONTEXT('dev_context', 'deptno');