使用SYS_CONTEXT
2015-09-20 22:52
288 查看
使用SYS_CONTEXT
1、什么是SYS_CONTEXT?
SYS_CONTEXT 函数是Oracle提供的一个获取环境上下文信息的预定义函数。
该函数用来返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。
上下文定义
(a set of application-defined attributes that validates and secures an application 一组由应用程序定义的属性用于验证和保护应用。)
2、语法
SYS_CONTEXT 语法格式:SYS_CONTEXT(‘namespace’,’parameter’{,LENGTH});
其中,namespace是存储信息的一个组group单位,namespace是按照类别进行分类的。
一个namespace下可以有多个参数值,通过不同的parameter进行区分。namespace是预先定义好的SQL标识符,而parameter是可以任意大小写非敏感的字符串,不超过30位长度。
函数返回值为varchar2类型,长度默认为256位。如果需要限制这个默认值,可以数据length参数作为新的返回长度值。
3、预定义的namespace – USERENV
常用parameters:
4、创建自定义上下文–CREATE CONTEXT
更多信息请参考:
SYS_CONTEXT
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htm
CREATE CONTEXT
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5002.htm#i2060927
1、什么是SYS_CONTEXT?
SYS_CONTEXT 函数是Oracle提供的一个获取环境上下文信息的预定义函数。
该函数用来返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。
上下文定义
(a set of application-defined attributes that validates and secures an application 一组由应用程序定义的属性用于验证和保护应用。)
2、语法
SYS_CONTEXT 语法格式:SYS_CONTEXT(‘namespace’,’parameter’{,LENGTH});
其中,namespace是存储信息的一个组group单位,namespace是按照类别进行分类的。
一个namespace下可以有多个参数值,通过不同的parameter进行区分。namespace是预先定义好的SQL标识符,而parameter是可以任意大小写非敏感的字符串,不超过30位长度。
函数返回值为varchar2类型,长度默认为256位。如果需要限制这个默认值,可以数据length参数作为新的返回长度值。
3、预定义的namespace – USERENV
常用parameters:
SELECT SYS_CONTEXT ('USERENV', 'TERMINAL') terminal, SYS_CONTEXT ('USERENV', 'LANGUAGE') language, SYS_CONTEXT ('USERENV', 'SESSIONID') sessionid, SYS_CONTEXT ('USERENV', 'INSTANCE') instance, SYS_CONTEXT ('USERENV', 'ENTRYID') entryid, SYS_CONTEXT ('USERENV', 'ISDBA') isdba, SYS_CONTEXT ('USERENV', 'NLS_TERRITORY') nls_territory, SYS_CONTEXT ('USERENV', 'NLS_CURRENCY') nls_currency, SYS_CONTEXT ('USERENV', 'NLS_CALENDAR') nls_calendar, SYS_CONTEXT ('USERENV', 'NLS_DATE_FORMAT') nls_date_format, SYS_CONTEXT ('USERENV', 'NLS_DATE_LANGUAGE') nls_date_language, SYS_CONTEXT ('USERENV', 'NLS_SORT') nls_sort, SYS_CONTEXT ('USERENV', 'CURRENT_USER') current_user, SYS_CONTEXT ('USERENV', 'CURRENT_USERID') current_userid, SYS_CONTEXT ('USERENV', 'SESSION_USER') session_user, SYS_CONTEXT ('USERENV', 'SESSION_USERID') session_userid, SYS_CONTEXT ('USERENV', 'PROXY_USER') proxy_user, SYS_CONTEXT ('USERENV', 'PROXY_USERID') proxy_userid, SYS_CONTEXT ('USERENV', 'DB_DOMAIN') db_domain, SYS_CONTEXT ('USERENV', 'DB_NAME') db_name, SYS_CONTEXT ('USERENV', 'HOST') HOST, SYS_CONTEXT ('USERENV', 'OS_USER') os_user, SYS_CONTEXT ('USERENV', 'EXTERNAL_NAME') external_name, SYS_CONTEXT ('USERENV', 'IP_ADDRESS') ip_address, SYS_CONTEXT ('USERENV', 'NETWORK_PROTOCOL') network_protocol, SYS_CONTEXT ('USERENV', 'BG_JOB_ID') bg_job_id, SYS_CONTEXT ('USERENV', 'FG_JOB_ID') fg_job_id, SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE') authentication_type, SYS_CONTEXT ('USERENV', 'AUTHENTICATION_DATA') authentication_data FROM DUAL;
4、创建自定义上下文–CREATE CONTEXT
SQL> create context test using set_test_context; Context created. SQL> create or replace procedure set_test_context(value in varchar2) is 2 begin 3 dbms_session.set_context('test','key',value); 4 end set_test_context; 5 / Procedure created. SQL> exec set_test_context('This is a context set value!'); PL/SQL procedure successfully completed. SQL> select sys_context('test','key') show_value from dual; SHOW_VALUE ------------------------------------------------------------------- This is a context set value!
更多信息请参考:
SYS_CONTEXT
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htm
CREATE CONTEXT
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5002.htm#i2060927
相关文章推荐
- nyoj-11 奇偶数分离
- Maven权威指南-----3、一个简单的Maven项目
- 在ROS中使用usb网络摄像头(usb_cam,Arch linux,ROS JADE)
- drools规则语法-API与FACT(三)
- 访问修饰符
- 私有项目免费使用Git
- String的split方法
- 自定义圆角的button
- makefile简单多文件编译
- Google chrome 安装包双击无任何反应
- android Flag启动模式
- Android 进程通信-- Binder机制
- HelloJSP!——内置对象编程题
- 树莓派B+上手小记--使用HDMI线连接显示器
- SpringMVC 自定义拦截器使用
- Java 加密算法
- 1_TwoSum
- Linux 高可用(HA)集群之keepalived 推荐
- 进程间通信IPC
- HDU 5464 Clarke and problem(DP 01背包)