SYS_CONTEXT 详细用法

SYS_CONTEXT 详细用法

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;

 

 

SYS_CONTEXT 函数是Oracle提供的一个获取环境上下文信息的预定义函数。

该函数用来返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。

 

SYS_CONTEXT 实际上就是一个Oracle存储和传递参数的容器访问函数。

我们登入Oracle服务器,是带有会话信息session_info和其他一些属性信息。

其中,有一些是Oracle预定义的,登录系统的时候自动填入到指定的变量中。还有一些是我们自己定义到其中,用于传递值使用的。

 

SYS_CONTEXT 语法格式:SYS_CONTEXT('namespace','parameter'{,LENGTH});

其中,namespace是存储信息的一个组group单位,namespace是按照类别进行分类的。

一个namespace下可以有多个参数值,通过不同的parameter进行区分。namespace是预先定义好的SQL标识符,而parameter是可以任意大小写非敏感的字符串,不超过30位长度。

函数返回值为varchar2类型,长度默认为256位。如果需要限制这个默认值,可以数据length参数作为新的返回长度值。

 

 

设置namespace指定parameter值,可以使用dbms_session.set_context方法进行。

[oracle@ebs12vis ~]$ sqlplus apps/apps

SQL*Plus: Release 11.1.0.7.0 - Production on Thu Oct 30 20:23:36 2014

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


Connected to: 
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options

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!

 
分类: Oracle
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将系统的时区设置修改为东京(Tokyo),您可以使用以下代码: ```java // 获取系统属性对象 SystemProperties properties = SystemProperties.get(); // 设置系统属性 persist.sys.timezone 为 "Asia/Tokyo" properties.set("persist.sys.timezone", "Asia/Tokyo"); ``` 上述代码使用 `SystemProperties` 类来获取系统属性对象,并使用 `set()` 方法将 `persist.sys.timezone` 属性的值设置为 "Asia/Tokyo",即东京的时区。 请注意,上述代码需要在具有适当权限的上下文中执行,例如在系统应用或具有系统权限的应用中。确保您具备修改系统属性的权限才能使用此代码。 如果您在开发一个普通的应用程序,并且想要更改应用程序的时区而不是整个系统的时区,请参考下面的代码: ```java // 获取应用程序的上下文 Context context = getApplicationContext(); // 创建一个时区对象,表示东京的时区 TimeZone tokyoTimeZone = TimeZone.getTimeZone("Asia/Tokyo"); // 设置应用程序的时区 TimeZone.setDefault(tokyoTimeZone); // 重启应用程序以使时区设置生效 Intent restartIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); restartIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(restartIntent); ``` 上述代码使用 `TimeZone` 类来创建一个表示东京时区的对象,并使用 `setDefault()` 方法将应用程序的默认时区设置为东京时区。然后,通过重启应用程序来使时区设置生效。 请注意,这种方法只会影响您的应用程序,而不会更改整个系统的时区。如果您需要在整个系统中更改时区,请使用第一个代码示例。 希望这可以帮助到您。如果您有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值