oracle中如何跨不同session支持可读写的全局变量
2010-06-30 13:51
399 查看
oracle9i以上通过GLOBALLY ACCESSED CONTEXT方式可以实现。但在11GR2之前,这个特性不能在RAC环境下使用,让我们稍微感到一些遗憾.
首先,用户必须有CREATE ANY CONTEXT权限.
为了隔离访问,我以包的方式说明如何声明/修改/获取全局变量.
---- 创建CONTEXT并和一个包绑定:
Create or Replace Context AppContext using BasePkg ACCESSED GLOBALLY
---- 创建一个包来写入变量:
create or replace package BasePkg
as
procedure SetAppContext( name in varchar2,value in varchar2 );
procedure init;
end BasePkg;
----包体内容
create or replace package body BasePkg
as
G_SESSION_ID Constant Number := -1;
procedure init
IS
begin
NULL;
end;
procedure SetAppContext( name in varchar2,value in varchar2 )
as
begin
dbms_session.setAppContext ( 'FMIS_BASE', name, value, NULL, G_SESSION_ID );
end;
begin
dbms_session.set_identifier( g_session_id );
end BasePkg ;
--- 每次初始化以后
EXEC BasePkg .init;
--就可以跨session,访问全局变量了
select sys_context( 'FMIS_BASE' ,'变量名' ) from dual
首先,用户必须有CREATE ANY CONTEXT权限.
为了隔离访问,我以包的方式说明如何声明/修改/获取全局变量.
---- 创建CONTEXT并和一个包绑定:
Create or Replace Context AppContext using BasePkg ACCESSED GLOBALLY
---- 创建一个包来写入变量:
create or replace package BasePkg
as
procedure SetAppContext( name in varchar2,value in varchar2 );
procedure init;
end BasePkg;
----包体内容
create or replace package body BasePkg
as
G_SESSION_ID Constant Number := -1;
procedure init
IS
begin
NULL;
end;
procedure SetAppContext( name in varchar2,value in varchar2 )
as
begin
dbms_session.setAppContext ( 'FMIS_BASE', name, value, NULL, G_SESSION_ID );
end;
begin
dbms_session.set_identifier( g_session_id );
end BasePkg ;
--- 每次初始化以后
EXEC BasePkg .init;
--就可以跨session,访问全局变量了
select sys_context( 'FMIS_BASE' ,'变量名' ) from dual
相关文章推荐
- [InstallShield]如何在不同的Script文件之间共享全局变量
- [置顶] 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- python中如何在不同文件间共享全局变量
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- python中如何在不同文件间共享全局变量
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- PHP 全局变量 与 SESSION 漏洞(global 与 session)
- vs2008如何新建自己工程的环境变量(局部)和 Windows系统(全局).
- ORACLE 如何查询被锁定表及如何解锁释放session
- 如何使用变量给数据源控件参数赋值、如何动态增减数据源控件参数并支持分页
- 如何在MFC中添加全局变量和全局函数
- jquery中如何设置全局变量
- 【小技巧】如何修改 Lua 5.1 的引擎,让Lua支持中文变量名、混合变量名
- Silverlight中如何与Asp.Net交换变量,取得Session的值问题?
- oracle pl/sql如何定义变量
- Matlab function如何使用全局变量
- 如何合理的声明JavaScript变量,避免污染全局变量
- SMARTY模板中如何使用get,post,request,cookies,session,server变量
- vue 如何添加全局函数或全局变量以及单页面的title设置总结