不
知道有没有用过userevn和sys_context这两个方法。
userenv在我们查看当前用户的session的字符集的时候是经常用到的。
比如
select
userenv('language') from dual;
sys_context的用户和这个userenv类似,是一个保持了和session有关的session级别的上下文。
这个上下文是一个session里的都可以访问到的地方,所以如果我们于需要在这里放入一些session级别的自己的信息,就可以使用这个
sys_context的上下文了。
那么我们如何把自己的信息放到session里了。Oracle提供了一个DBMS_session的强大的有关session操作的包。文档可见http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10577/d_sessio.htm#i1010942
我们可以使用里面的set_context的方法
引用:
DBMS_SESSION.SET_CONTEXT
(
namespace VARCHAR2,
attribute VARCHAR2,
value
VARCHAR2,
username VARCHAR2,
client_id VARCHAR2 );
这里的几个参数的含义
namespace 这个context的命名空间
attribute
属性值,即为key值
value 值
username 用户名 默认null
client_id
指定的clientid 默认null这里1-3函数是一定要的,后面两个是可选值,
我们赶快到sqlplus试试把
引用:
SQL> exec
dbms_session.set_context('', 'name', 'liuyong');
BEGIN
dbms_session.set_context('', 'name', 'liuyong'); END;
*
ERROR at line 1:
ORA-28106: input value for argument #1 is not
valid
ORA-06512: at "SYS.DBMS_SESSION", line 78
ORA-06512: at
line 1
这里出错了。主要是我们的用法不对,在Oracle的文档里已经描述了,这里的context只能是建立create来使用,那么我们应该如何来用了
首先建立package来包装这个context
create or replace package
my_context_p as
procedure put(key varchar2, value varchar2);
end;
/
create or replace package body my_context_p as
procedure put(key varchar2, value varchar2) as
begin
dbms_session.set_context('my_context
',key,value);
end;
end;
/
然后建立context
create or replace context my_context
using my_context_p ACCESSED GLOBALLY;
注意这里的context的名字要和package里set_context的时候一样。 否则后面调用会告诉你ORA-01031:
insufficient privileges。
调用
SQL> exec
my_context_p.put('test', 'inthirties');
检查
SQL> exec
dbms_output.put_line(sys_context('my_context','test'));
inthirties
这样我们就实现了我们需要的功功能呀。
分享到:
相关推荐
1. ODCIAggregateInitialize 函数:用于初始化聚合函数环境,创建聚合函数的上下文环境。 2. ODCIAggregateIterate 函数:这是最主要的步骤,这个函数定义我们的聚合函数具体做什么操作,self 为当前聚合函数的指针...
2. **定义`context-root`**:在`weblogic.xml`文件中添加`<context-root>`元素,并设置其值为你希望的上下文根名称。 3. **部署应用程序**:将包含`weblogic.xml`文件的Web应用程序部署到WebLogic服务器上。 4. **...
使用`dbms_xmlgen.newContext(v_source)`创建一个XML生成的上下文对象。这个上下文对象将用于从游标数据生成XML。 4. **生成XML CLOB**: 调用`dbms_xmlgen.getXML(ctx)`从上下文对象中获取XML数据,将其存储到...
在Oracle数据库系统中,`SYS_CONTEXT`函数是一个非常实用的功能,它允许用户从不同的上下文中检索信息。在Oracle9.2版本中,这个函数提供了一种灵活的方式来访问与当前会话或系统环境相关的各种属性。下面,我们将...
2. **多线程使用互相独立的运行时上下文**:每个线程都有自己的运行时上下文,无需使用互斥锁。这种方式简化了并发控制,但可能需要更多的资源。 Pro*C为多线程应用程序提供了命令行选项和内嵌SQL语句来支持运行时...
- **定义**:安全参数、部门树和会话上下文信息。 - **用途**:管理安全性及会话状态。 #### 三、实例参数 此外,还列出了一些重要的实例参数: - `instance_name`:实例名称。 - `service_names`:服务名称列表。...
这段配置指定了Spring配置文件的位置,并启用了Spring的上下文加载监听器。此外,还配置了一个Struts过滤器,用于处理Struts框架相关的请求。 综上所述,通过以上配置,SSH框架可以成功连接并操作Oracle数据库。...
在Oracle数据库中,初始化用户会话常常涉及到对特定信息的高效、安全且灵活的管理。...在开发和维护Oracle数据库应用程序时,充分利用After Logon触发器和应用程序上下文,可以有效地提升系统的性能和用户体验。
这段代码首先通过`InitialContext`创建了一个JNDI上下文,然后使用`lookup`方法根据之前定义的JNDI名称查找数据源。最后,通过数据源的`getConnection`方法获取数据库连接。 总结来说,创建MyEclipse连接Oracle的...
- 使用 `semanage` 工具来创建或修改安全上下文(security context),以便 SQL*Plus 和其他 Oracle 应用程序能够正常工作。 - 例如,可以通过 `semanage fcontext -a -t oracle_home_t "/u01/app/oracle/product/...
通过理解和运用Oracle EBS中的弹性域,特别是其上下文字段的功能,企业能够更加灵活地管理复杂的数据结构,从而更好地适应不断变化的业务需求。此外,自定义上下文列的引入进一步增强了弹性域的灵活性,使得根据用户...
- `spring-context.jar`: 提供了上下文环境,包括依赖注入和AOP支持。 - `spring-web.jar`: 用于处理Web相关的功能,如Servlet监听器和过滤器。 - `spring-webmvc.jar`: 提供了Spring的MVC框架,与Struts2类似但...
除了上述手动配置外,你还可以通过修改`context.xml`文件(位于Tomcat的`conf/Catalina/localhost`目录下,对应于你的应用上下文)来配置数据源。在`<Context>`标签内,添加`<Resource>`标签,定义数据源的相关属性...
虽然题目要求主要集中在Oracle XML核心技术上,但为了提供完整的上下文,这里也将简要介绍ASP内嵌对象的基本概念及其使用。 ##### 1. ASP内嵌对象概述 ASP(Active Server Pages)是一种服务器端脚本环境,可以在服务器...
- **上下文(Context)**:允许逻辑模式通过不同上下文连接多个物理模式,用于管理数据库连接信息,确保物理模式的可移植性。 3. **ODI的管理工具**: - **Topology Manager**:用于管理ODI的物理和逻辑结构,...
Pretius APEX上下文菜单是动态操作插件,基于定义的APEX列表实现APEX弹出菜单。 该插件可以附加到任何HTML元素,并根据授权方案结果呈现条目。 可以通过覆盖行为,动态添加子菜单和添加新条目来扩展菜单条目。 预习 ...
在本文中,我们将详细介绍 MySQL 事件的定义、语法、示例、权限设定、上下文环境设定、元数据、事件计划、其他 DBMS 的情况以及实践用例。 定义和语法 CREATE EVENT 语句用于创建一个新的事件,语法如下: CREATE...
**解答**: `SYS_CONTEXT`函数允许访问Oracle环境中的上下文信息,例如会话变量、服务器参数等。它常用于获取当前会话的信息。 - **示例**: 获取当前用户的名称: ```sql SELECT SYS_CONTEXT('USERENV','CURRENT_...