1、SYS_CONTEXT介绍
SYS_CONTEXT 函数是Oracle提供的一个获取环境上下文信息的预定义函数。
该函数用来返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。
2、用法:
第一个参数为'USERENV',是固定的,第二个参数也是固定的,但是是多选固定,可选的值如下所示:
select sys_context('USERENV','AUTHENTICATION_TYPE') from dual; --用户的认证类型 select sys_context('USERENV','AUTHENTICATION_DATA') from dual; --未知 select sys_context('USERENV','BG_JOB_ID') from dual; --当前指定id的会话是否为oracle后台程序建立,不是则返回null select sys_context('USERENV','CLIENT_INFO') from dual; --通过dbms_application_info包可以存储高达64字节的用户会话信息 select sys_context('USERENV','CURRENT_SCHEMA') from dual; --默认的schema将被当做当前的schema。当在当前会话中使用ALTER SESSION SET CURRENT_SCHEMA语句的时候,它的查询返回值将被改变 select sys_context('USERENV','CURRENT_SCHEMAID') from dual; --当前schema的id select sys_context('USERENV','CURRENT_USER') from dual; --当前的登陆用户 select REPLACE(SUBSTR(sys_context('USERENV','HOST'),1,30),'\',':') from dual; --当前会话主机操作系统名 select sys_context('USERENV','CURRENT_USERID') from dual; --当前登陆的用户的id select sys_context('USERENV','DB_DOMAIN') from dual; --为数据库的域指定初始化参数 select sys_context('USERENV','DB_NAME') from dual; --数据库实例名 select sys_context('USERENV','ENTRYID') from dual; --可用的审计标示符。不能再分布式sql语句中使用此选项。使用USERENV关键字必须置AUDIT_TRAIL的初始化参数为真。 select sys_context('USERENV','EXTERNAL_NAME') from dual; --数据库用户的扩展名 select sys_context('USERENV','FG_JOB_ID') from dual; --返回作业id当此会话是客户端进程创建。否则,返回null select sys_context('USERENV','INSTANCE') from dual; --当前数据库实例的标示id select sys_context('USERENV','ISDBA') from dual; --当前用户是否是以dba身份登录 select sys_context('USERENV','LANG') from dual; --iso对‘LANGUAGE’的简称,查询的参数比“LANGUAGE”短 select sys_context('USERENV','LANGUAGE') from dual; --结果为当前数据库使用的存储语言,跟上面查询意义一样 select sys_context('USERENV','NETWORK_PROTOCOL') from dual; --用于通信的网络协议 select sys_context('USERENV','NLS_CALENDAR') from dual; --当前会话使用的,格林尼治时间 select sys_context('USERENV','NLS_CURRENCY') from dual; --本地化的货币符,如人民币为¥,美元符为$ select sys_context('USERENV','NLS_DATE_FORMAT') from dual; --当前使用的日期格式,一般中国为dd-mon-rr select sys_context('USERENV','NLS_DATE_LANGUAGE') from dual; --表示日期的语言,如中文简体SIMPLIFIED CHINESE select sys_context('USERENV','NLS_TERRITORY') from dual; --数据库服务器所在区域,如中国CHINA select sys_context('USERENV','OS_USER') from dual; --操作系统的用户名 select sys_context('USERENV','PROXY_USER') from dual; --是否使用代理用户。否返回null select sys_context('USERENV','PROXY_USERID') from dual; --代理用户id select sys_context('USERENV','SESSION_USER') from dual; --当前认证的数据库用户名 select sys_context('USERENV','SESSION_USERID') from dual; --当前认证的数据库用户名id select sys_context('USERENV','SESSIONID') from dual; --当前会话id select sys_context('USERENV','TERMINAL') from dual; --操作系统用户组 select sys_context('USERENV','IP_ADDRESS') from dual; --当前会话主机ip select sys_context('USERENV','HOST') from dual; --当前会话主机操作系统名