您的位置:首页 > 数据库 > Oracle

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐