度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 866|回复: 3
打印 上一主题 下一主题

[分享] oracle中userenv、sys_context用法小结

[复制链接]

348

主题

3572

帖子

9317

积分

论坛元老

Rank: 8Rank: 8

积分
9317
跳转到指定楼层
楼主
发表于 2020-4-24 00:22:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
oralce数据库中,对于userenv这个方法我倒是很少见用(不是因为用的少,而是系统本身可能已经用了,开发人员无需再处理),今天在看EBS注册应用的SQL代码时发现了下面的这段代码,这才注意到了userenv的用法,从而在网上搜集了相关资料,最后总结了这篇文章。
-- EBS系统中有关创建应用视图的一段代码CREATE OR REPLACE VIEW FND_APPLICATION_VL ASSELECT b.rowid row_id,       b.application_id,       b.application_short_name,       b.last_update_date,       b.last_updated_by,       b.creation_date,       b.created_by,       b.last_update_login,       b.basepath,       t.application_name,       t.description,       b.product_code  FROM fnd_application_tl t,       fnd_application    b WHERE b.application_id = t.application_id   AND t.language = userenv('LANG'); -- 在这里用到了userenv('LANG'),主要实现的是获取客户端语言


下面这篇总结修改自“小波Ooo”的《oracle中的userenv()》,只做学习、交流之用:

1、userenv

userenv用于返回当前用户环境的信息,opt可以是ENTRYID、SESSIONID、TERMINAL、ISDBA、LABLE、LANGUAGE、CLIENT_INFO、LANG、VSIZE。

(1)ISDBA:查看当前用户是否是DBA,如果是DBA,则返回true,否则返回false。

(2)SESSIONID:返回会话ID。

(3)ENTRYID:返回会话入口ID。

(4)INSTANCE:返回当前INSTANCE的标识。

(5)LANGUAGE:返回当前语言的环境变量。

(6)LANG:返回当前环境的语言的缩写。

(7)TERMINAL:返回用户的终端或机器的标识。

(8)VSIZE(X):返回X的大小(字节)数。

如:SELECT vsize(USER), USER FROM dual;

2、sys_context

  1. -- 有关sys_context的用法,直接在数据库中运行如下代码,可以比较明显的看出各自代表的意思,这里不多说。
  2. SELECT   sys_context('USERENV',
  3.                      'TERMINAL') terminal,
  4.          sys_context('USERENV',
  5.                      'LANGUAGE') LANGUAGE,
  6.          sys_context('USERENV',
  7.                      'SESSIONID') sessionid,
  8.          sys_context('USERENV',
  9.                      'INSTANCE') instance,
  10.          sys_context('USERENV',
  11.                      'ENTRYID') entryid,
  12.          sys_context('USERENV',
  13.                      'ISDBA') isdba,
  14.          sys_context('USERENV',
  15.                      'NLS_TERRITORY') nls_territory,
  16.          sys_context('USERENV',
  17.                      'NLS_CURRENCY') nls_currency,
  18.          sys_context('USERENV',
  19.                      'NLS_CALENDAR') nls_calendar,
  20.          sys_context('USERENV',
  21.                      'NLS_DATE_FORMAT') nls_date_format,
  22.          sys_context('USERENV',
  23.                      'NLS_DATE_LANGUAGE') nls_date_language,
  24.          sys_context('USERENV',
  25.                      'NLS_SORT') nls_sort,
  26.          sys_context('USERENV',
  27.                      'CURRENT_USER') CURRENT_USER,
  28.          sys_context('USERENV',
  29.                      'CURRENT_USERID') current_userid,
  30.          sys_context('USERENV',
  31.                      'SESSION_USER') session_user,
  32.          sys_context('USERENV',
  33.                      'SESSION_USERID') session_userid,
  34.          sys_context('USERENV',
  35.                      'PROXY_USER') proxy_user,
  36.          sys_context('USERENV',
  37.                      'PROXY_USERID') proxy_userid,
  38.          sys_context('USERENV',
  39.                      'DB_DOMAIN') db_domain,
  40.          sys_context('USERENV',
  41.                      'DB_NAME') db_name,
  42.          sys_context('USERENV',
  43.                      'HOST') host,
  44.          sys_context('USERENV',
  45.                      'OS_USER') os_user,
  46.          sys_context('USERENV',
  47.                      'EXTERNAL_NAME') external_name,
  48.          sys_context('USERENV',
  49.                      'IP_ADDRESS') ip_address,
  50.          sys_context('USERENV',
  51.                      'NETWORK_PROTOCOL') network_protocol,
  52.          sys_context('USERENV',
  53.                      'BG_JOB_ID') bg_job_id,
  54.          sys_context('USERENV',
  55.                      'FG_JOB_ID') fg_job_id,
  56.          sys_context('USERENV',
  57.                      'AUTHENTICATION_TYPE') authentication_type,
  58.          sys_context('USERENV',
  59.                      'AUTHENTICATION_DATA') authentication_data   from dual;
复制代码

userenv和sys_context都可以实现类似的功能,具体的在开发的时候使用哪一个,userenv函数是旧版本使用的函数,8i以后都建议使用sys_context,开发的时候注意下就好。




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
发表于 2020-4-24 14:16:52 | 只看该作者
学习了
回复

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-4-24 16:55:49 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
地板
发表于 2020-4-24 17:01:27 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-17 04:25 , Processed in 0.126173 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表