USERENV 可以用来查看当前 SESSION 的相关信息,诸如是否拥有 DBA 权限(ISDBA)、当前会话的 SESSIONID 等。通常用的最多的是用来查看当前会话的 语言(LANGUAGE) 种类。
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
上面的 SQL 语句将会查询当前会话的语言种类,其返回的格式为
LANGUAGE_TERRITORY.CHARACTERSET
USERENV 是为了满足向后兼容的需要而存在的。在 10.2 的 SQLRef 中 Oracle 推荐使用 SYS_CONTEXT 。用法如下
SQL> select sys_context('USERENV', 'LANGUAGE') from dual;
SYS_CONTEXT('USERENV','LANGUAG')
--------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
USERENV 作为 Oracle 内置的 命名空间(namespace) 不需要创建,可以直接使用。