Oracle 中的Userenv()
oracle userenv函數 、sys_context
用userenv 得到session id ,再串連v$transaction 串連v$session ,用session id 查當前事務號
select t.xid from v$transaction t join v$session s on t.ADDR = s.TADDR where s.sid = userenv('sid')
1、 USERENV(OPTION)
返回當前的會話資訊.
OPTION='ISDBA'若當前是DBA角色,則為TRUE,否則FALSE.
OPTION='LANGUAGE'返回資料庫的字元集.
OPTION='SESSIONID'為當前工作階段識別項.
OPTION='ENTRYID'返回可審計的工作階段識別項.
OPTION='LANG'返回會話語言名稱的ISO簡記.
OPTION='INSTANCE'返回當前的執行個體.
OPTION='terminal'返回當前電腦名稱
SELECT USERENV('LANGUAGE') FROM DUAL;
2、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
oracle dual是一個虛擬表,用來構成select的文法規則,oracle保證dual裡面永遠只有一條記錄.
sql語言不是一個萬能的程式語句,它能與外界互動的只有select update insert delete ,這四句都要有表,沒表怎麼辦。那就用dual表吧。