oracle提供的sys_context函数来得到跟session相关的上下文,比如:

SCOTT@ORA11GR2>select sys_context('userenv','db_name') db_name,sys_context('userenv','host') host_name from dual;

DB_NAME  HOST_NAME

-------- ----------

ORA11GR2 ocmu

SCOTT@ORA11GR2>

如果需要返回一些属于我们自己的上下文,当然,我们可以自己来定义。

一、设置上下文:

DBMS_SESSION.SET_CONTEXT (

namespace VARCHAR2,

attribute VARCHAR2,

value     VARCHAR2,

username  VARCHAR2,

client_id VARCHAR2 );

参数含义:

namespace:上下文的名称

attribute:上下文的属性

value:上下文的值

username:应用程序上下文属性数据库的用户名,默认值为null

client_id:特定于应用程序的client_id,默认值为null

特别注意:DBMS_SESSION.SET_CONTEXT这个过程必须使用包或者过程等来调用,不能直接exec的方式手工执行。

二、创建上下文语法:

CREATE [ OR REPLACE ] CONTEXT namespace

USING [ schema. ] package

[ INITIALIZED { EXTERNALLY | GLOBALLY }| ACCESSED GLOBALLY] ;

INITIALIZED子句:指定实体意外的其他数据库

ACCESSED GLOBALLY:当前实例任何应用程序都可以访问上下文,多个会话可以共享上下文的属性。

三、自定义上下文测试:

1):创建一个简单的过程,过程的功能为初始化自定义上下文,以字符串形式返回系统时间的年月日

SYSTEM@ORA11GR2>CREATE OR REPLACE PROCEDURE sp_context IS

BEGIN

dbms_session.set_context('MY_CONTEXT', 'XXF', to_char(sysdate,'yyyymmdd'));

END;

/

Procedure created.

SYSTEM@ORA11GR2>

2):创建自定义上下文my_context,利用刚刚创建好的过程

SYSTEM@ORA11GR2>create or replace context my_context using sp_context;

Context created.

SYSTEM@ORA11GR2>

3):验证自定义上下文my_context,结果返回为null,原因是,我们没有初始化'XXF'属性

SYSTEM@ORA11GR2>select sys_context('MY_CONTEXT', 'XXF') from dual;

SYS_CONTEXT('MY_CONTEXT','XXF')

------------------------------------------------------------------

SYSTEM@ORA11GR2>

4):手工执行一下过程sp_context

SYSTEM@ORA11GR2>exec sp_context

PL/SQL procedure successfully completed.

SYSTEM@ORA11GR2>

5):再次验证自定义上下文sys_context,返回了我们想要的结果,此时有朋友会问,这也太麻烦了,每次都需要手工执行一下过程,其实这个问题很好解决,我们可以通过触发器来解决此问题。

SYSTEM@ORA11GR2>select sys_context('MY_CONTEXT', 'XXF') from dual;

SYS_CONTEXT('MY_CONTEXT','XXF')

------------------------------------------------------------------

20121129

SYSTEM@ORA11GR2>

6):创建一个数据库级触发器,每次登陆后都触发过程sp_context

SYSTEM@ORA11GR2>create or replace trigger trg_context

after logon on database

begin

sp_context;

end;

/

Trigger created.

SYSTEM@ORA11GR2>exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@ocmu ~]$

7):重新登陆一个新的会话,验证自定义上下文,成功。

[oracle@ocmu ~]$ sqlplus scott/tiger

SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 29 21:26:59 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SCOTT@ORA11GR2>select sys_context('MY_CONTEXT', 'XXF') from dual;

SYS_CONTEXT('MY_CONTEXT','XXF')

-----------------------------------------------------------------

20121129

SCOTT@ORA11GR2>

四、小结:

1)创建上下文,默认情况下是ACCESSED GLOBALLY,SCOTT用户都可以直接使用。

2)本例只是一个简单的测试,如果有复杂的需求,那么可以在过程中完成复杂的逻辑来实现需求。

3)创建上下文需要有CREATE ANY CONTEXT的系统权限

linux7设置上下文权限,【CONTEXT】自定义CONTEXT(上下文)相关推荐

  1. Django基础(35): 全局上下文处理器(Context Processors)详解及如何自定义模板上下文处理器...

    Django的Context Processors的中文名字有很多种,有人翻译成文本处理器,也有人翻译成上下文处理器.小编最喜欢的翻译是全局上下文处理器,因为它的主要作用就是向模板传递需要全局使用的变 ...

  2. oracle查看context,oracle context(上下文)

    context在计算机领域翻译为上下文 context的信息也就是当前会话中的环境变量,如:登录的session_id,用户名,语言等信息 查看context中的属性信息. oracle默认的为我们创 ...

  3. 块格式化上下文(Block Formatting Context,BFC)

    块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域. 下列方式会创建块格 ...

  4. 如何在 SAP CRM WebClient UI 里在 Context node 上下文里访问其他 Context Node 的数据

    今天一个朋友在微信上咨询我一个问题: 抽象一下,这个问题就是:如何在 Context Node A 的上下文,比如 GET 方法里,读取到 Context Node B 的数据? 以 Product ...

  5. shape context matlab,形状上下文(shape context)算法完全解读

    形状上下文(Shape Context)算法完全解读 前言 一. 轮廓提取(Canny Edge Detection)和轮廓点采样(Jitendra's Sampling) 二. 形状上下文(Shap ...

  6. 对 BFC 规范(块级格式化上下文:block formatting context)的理解?

    相关知识点: 块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒 子的区域,也是浮动元素与其他元素的交互限定区域. ...

  7. Python with上下文管理及自定义上下文管理

    Python with上下文管理及自定义上下文管理 一.上下文管理器 上下文管理器是对Context Manager的翻译 ,上下文是 context 直译的叫法,在程序中用来表示代码执行过程中所处的 ...

  8. TextView设置字重(自定义自重)

    TextView自定义加粗 1.目的 2.三种加粗方法 3.第三种方式额外问题以及解决方案 3.1实现细节 1.目的 android提供的几种加粗方法不满足我司ui设计的字体字重 2.三种加粗方法 设 ...

  9. android 自定义switchpreference,Android设置选项开发及自定义Preference样式

    一个完整的Android应用程序都应该提供选项(或者叫偏好设置等等)让用户对APP的表现形式能够进行设置,比如说是否加入用户体验计划,或者是否自动升级.定时提醒.开启自启动.后台运行等等.提供一个好的 ...

  10. 设置dialog显示,自定义时间到后dialog消失

    方法一: public class MyDialog extends Dialog {private int FLAG_DISMISS = 1;private boolean flag = true; ...

最新文章

  1. 不用数学也能讲清贝叶斯理论的马尔可夫链蒙特卡洛方法?这篇文章做到了
  2. 用纯C面向过程写icefox3的代码
  3. Linux正则表达式判断是否是数字示例
  4. s5-2 Cpu调度算法
  5. java中list去除空值_Java –从列表中删除所有空值
  6. java 输出三位数和n位数的每一位的数
  7. 通过网络连接检测计算机病毒,网络安全习题及答案
  8. 文本区域的高度随着内容增加----插件
  9. 防止HALCON刷新图像窗口控件闪烁
  10. chap8_2 Fresnel in OGRE
  11. 动手学PyTorch知识点汇总
  12. Ubuntu 下 MySQL 数据自执行备份
  13. 冲刺第一天 11.23 FRI
  14. 14_python_练习题——excel操作
  15. 如何自己更改证件照底色?如何生成蓝底照片电子版?
  16. 由于计算机启动了配置文件,提示由于启动计算机时出现了页面文件配置问题解决方法...
  17. vsftpd mysql_虚拟主机与vsftpd和MySQL在Debian Etch
  18. 基于Tensorflow 三层神经网络拟合二次函数(附代码与解析)
  19. 认识Python(python起源、设计、特点及编译型语言、解释型语言)
  20. Trac系列(2):Trac的使用

热门文章

  1. 2011华为上机试题-Java
  2. 类的加载过程详解之过程三:Initialization(初始化)阶段
  3. 数据结构之红黑树插入详解
  4. MyCat之全局表和ER表
  5. JVM初识之类加载器
  6. 世上哪有那么多的怀才不遇
  7. 控制Arduino的利器-Windows Remote Arduino
  8. Fedora 25-64位操作系统中安装配置Hyperledger Fabric过程
  9. Android binder
  10. mysql check约束无效