說說sys_context函式
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方法進行。
//自定義一個namespace,並且規定的設定的方法控制程式碼;…………………….step 1
SQL> create context Test using set_test_context;
Context created
//定義方法 …………………….step 2
create or replace procedure set_test_context
(
vc_value in varchar2
)
is
begin
dbms_session.set_context('Test','a1',vc_value);
end set_test_context;
//設定上值 …………………….step 3
SQL> exec set_test_context('m');
PL/SQL procedure successfully completed
//獲取這個值
SQL> select sys_context('Test','a1') from dual;
SYS_CONTEXT('TEST','A1')
------------------------------------
m
step1-3很重要,因為Test namespace為自定義的namespace,所以需要這樣的設定,以確定許可權所屬。
sys_context函式最常用的就是userenv名稱空間下的系列引數。下面是引數列表,摘自
http://hi.baidu.com/edeed/blog/item/28cba0ecaa6c8e3e269791bb.html;
Attribute |
Return Value |
ACTION |
Identifies the position in the module (application name) and is set through the DBMS_APPLICATION_INFO package or OCI. |
SELECT sys_context('USERENV', 'ACTION') FROM dual; | |
AUDITED_CURSORID |
Returns the cursor ID of the SQL that triggered the audit. This parameter is not valid in a fine-grained auditing environment. If you specify it in such an environment, Oracle Database always returns NULL. |
AUTHENTICATED_IDENTITY |
Returns the identity used in authentication. In the list that follows, the type of user is followed by the value returned:
|
AUTHENTICATION_DATA |
Data being used to authenticate the login user. For X.503 certificate authenticated sessions, this field returns the context of the certificate in HEX2 format. |
AUTHENTICATION_METHOD |
Returns the method of authentication. In the list that follows, the type of user is followed by the method returned.
|
BG_JOB_ID |
Job ID of the current session if it was established by an Oracle background process. Null if the session was not established by a background process. |
CLIENT_IDENTIFIER |
Returns an identifier that is set by the application through the DBMS_SESSION.SET_IDENTIFIER procedure, the OCI attribute OCI_ATTR_CLIENT_IDENTIFIER, or the Java class Oracle.jdbc.OracleConnection.setClientIdentifier. This attribute is used by various database components to identify lightweight application users who authenticate as the same user. |
SELECT sys_context('USERENV', 'CLIENT_IDENTIFIER') FROM dual; | |
CLIENT_INFO |
Returns user session information that can be stored by an application using the DBMS_APPLICATION_INFO package. |
SELECT sys_context('USERENV', 'CLIENT_INFO') FROM dual; | |
CURRENT_BIND |
The bind variables for fine-grained auditing |
CURRENT_EDITION_ID |
The name of the current edition |
SELECT sys_context('USERENV', 'CURRENT_EDITION_ID') FROM dual; | |
CURRENT_EDITION_NAME |
The name of the current edition |
SELECT sys_context('USERENV', 'CURRENT_EDITION_NAME') FROM dual; | |
CURRENT_SCHEMA |
Name of the default schema being used in the current schema. This value can be changed during the session with an ALTER SESSION SET CURRENT_SCHEMA statement. |
SELECT sys_context('USERENV', 'CURRENT_SCHEMA') FROM dual; | |
CURRENT_SCHEMAID |
Identifier of the default schema being used in the current session. |
SELECT sys_context('USERENV', 'CURRENT_SCHEMAID') FROM dual; | |
CURRENT_SQL |
Returns the first 4K bytes of the current SQL that triggered the fine-grained auditing event. |
CURRENT_SQLn |
CURRENT_SQLn attributes return subsequent 4K-byte increments, where n can be an integer from 1 to 7, inclusive. CURRENT_SQL1 returns bytes 4K to 8K; CURRENT_SQL2 returns bytes 8K to 12K, and so forth. You can specify these attributes only inside the event handler for the fine-grained auditing feature. |
CURRENT_SQL_LENGTH |
The length of the current SQL statement that triggers fine-grained audit or row-level security (RLS) policy functions or event handlers. Valid only inside the function or event handler. |
DB_DOMAIN |
Domain of the database as specified in the DB_DOMAIN initialization parameter. |
SELECT sys_context('USERENV', 'DB_DOMAIN') FROM dual; | |
DB_NAME |
Name of the database as specified in the DB_NAME initialization parameter. |
SELECT sys_context('USERENV', 'DB_NAME') FROM dual; | |
DB_UNIQUE NAME |
Name of the database as specified in the DB_UNIQUE_NAME initialization parameter. |
SELECT sys_context('USERENV', 'DB_UNIQUE_NAME') FROM dual; | |
ENTRYID |
The available auditing entry identifier. You cannot use this option in distributed SQL statements. To use this keyword in USERENV, the initialization parameter AUDIT_TRAIL must be set to true. |
ENTERPRISE_IDENTITY |
Returns the user's enterprise-wide identity:
The value of the attribute differs by proxy method:
|
FG_JOB_ID |
Job ID of the current session if it was established by a client foreground process. Null if the session was not established by a foreground process. |
GLOBAL_CONTEXT_MEMORY |
The number used in the System Global Area by the globally accessed context. |
SELECT sys_context('USERENV', 'GLOBAL_CONTEXT_MEMORY') FROM dual; | |
GLOBAL_UID |
Returns the global user ID from Oracle Internet Directory for Enterprise User Security (EUS) logins; returns null for all other logins. |
HOST |
Name of the host machine from which the client has connected. |
SELECT sys_context('USERENV', 'HOST') FROM dual; | |
IDENTIFICATION_TYPE |
Returns the way the user's schema was created in the database. Specifically, it reflects the IDENTIFIED clause in the CREATE/ALTER USER syntax. In the list that follows, the syntax used during schema creation is followed by the identification type returned:
|
SELECT sys_context('USERENV', 'IDENTIFICATION_TYPE') FROM dual; | |
INSTANCE |
The instance identification number of the current instance. |
SELECT sys_context('USERENV', 'INSTANCE') FROM dual; | |
INSTANCE_NAME |
The name of the instance. |
SELECT sys_context('USERENV', 'INSTANCE_NAME') FROM dual; | |
IP_ADDRESS |
IP address of the machine from which the client is connected. |
ISDBA |
TRUE if the session is SYS |
SELECT sys_context('USERENV', 'ISDBA') FROM dual; | |
LANG |
The ISO abbreviation for the language name, a shorter form. than the existing 'LANGUAGE' parameter. |
SELECT sys_context('USERENV', 'LANG') FROM dual; | |
LANGUAGE |
The language and territory currently used by your session, along with the database character set, in the form.: |
SELECT sys_context('USERENV', 'LANGUAGE') FROM dual; | |
MODULE |
The application name (module) set through the DBMS_APPLICATION_INFO package or OCI. |
SELECT sys_context('USERENV', 'MODULE') FROM dual; | |
NETWORK_PROTOCOL |
Network protocol being used for communication, as specified in the 'PROTOCOL=protocol' portion of the connect string. |
NLS_CALENDAR |
The current calendar of the current session. |
SELECT sys_context('USERENV', 'NLS_CALENDAR') FROM dual; | |
NLS_CURRENCY |
The currency of the current session. |
SELECT sys_context('USERENV', 'NLS_CURRENCY') FROM dual; | |
NLS_DATE_FORMAT |
The date format for the session. |
SELECT sys_context('USERENV', 'NLS_DATE_FORMAT') FROM dual; | |
NLS_DATE_LANGUAGE |
The language used for expressing dates. |
SELECT sys_context('USERENV', 'NLS_DATE_LANGUAGE') FROM dual; | |
NLS_SORT |
BINARY or the linguistic sort basis. |
SELECT sys_context('USERENV', 'NLS_SORT') FROM dual; | |
NLS_TERRITORY |
The territory of the current session. |
SELECT sys_context('USERENV', 'NLS_TERRITORY') FROM dual; | |
OS_USER |
Operating system username of the client process that initiated the database session. |
SELECT sys_context('USERENV', 'OS_USER') FROM dual; | |
POLICY_INVOKER |
The invoker of row-level security (RLS) policy functions. |
PROXY_ENTERPRISE_IDENTITY |
Returns the Oracle Internet Directory DN when the proxy user is an enterprise user. |
PROXY_GLOBAL_UID |
Returns the global user ID from Oracle Internet Directory for Enterprise User Security (EUS) proxy users; returns NULL for all other proxy users. |
PROXY_USER |
Name of the database user who opened the current session on behalf of SESSION_USER. |
PROXY_USERID |
Identifier of the database user who opened the current session on behalf of SESSION_USER. |
SERVER_HOST |
The host name of the machine on which the instance is running. |
SELECT sys_context('USERENV', 'SERVER_HOST') FROM dual; | |
SERVICE_NAME |
The name of the service to which a given session is connected. |
SELECT sys_context('USERENV', 'SERVICE_NAME') FROM dual; | |
SESSION_USER |
Database user name by which the current user is authenticated. This value remains the same throughout the duration of the session. |
SELECT sys_context('USERENV', 'SESSION_USER') FROM dual; | |
SESSION_USERID |
Identifier of the database user name by which the current user is authenticated. |
SELECT sys_context('USERENV', 'SESSION_USERID') FROM dual; | |
SESSIONID |
The auditing session identifier. You cannot use this option in distributed SQL statements. This is the equivalent to the AUDSID column in gv$session. |
SELECT sys_context('USERENV', 'SESSIONID') FROM dual; | |
SID |
The session number (different from the session ID). |
SELECT sys_context('USERENV', 'SID') FROM dual; | |
STATEMENTID |
The auditing statement identifier. STATEMENTID represents the number of SQL statements audited in a given session. |
TERMINAL |
The operating system identifier for the client of the current session. In distributed SQL statements, this option returns the identifier for your local session. In a distributed environment, this is supported only for remote SELECT statements, not for remote INSERT, UPDATE, or DELETE operations. (The return length of this parameter may vary by operating system.) |
SELECT sys_context('USERENV', 'TERMINAL') FROM dual; |
例子:
SQL> select sys_context('userenv','ip_address') from dual;
SYS_CONTEXT('USERENV','IP_ADDR
-----------------------------------
169.254.94.86
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2135551/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 說說函式索引函式索引
- Less函式說明函式
- sap 函式說明函式
- PHP 風險函式說明PHP函式
- mysql count函式說明MySql函式
- 說說在 Python 中如何測試函式Python函式
- 說說 Spring 支援的 AspectJ 切點函式Spring函式
- sys_context函式用法Context函式
- 說說在 Python 中如何向函式傳參Python函式
- 說說 Vue.js 中的 functional 函式化元件Vue.jsFunction函式元件
- 胡說-JavaScript函式型別JavaScript函式型別
- Vector容器主要函式說明函式
- memset函式詳細說明函式
- scapy函式 IP() 使用說明函式
- Java @FunctionInterface函式式介面使用說明JavaFunction函式
- sys_context函式的用法Context函式
- userenv和sys_context函式Context函式
- Python 閉包函式說明Python函式
- goldengate常用函式使用說明Go函式
- wordpress模板修改及函式說明函式
- Python常用函式及說明Python函式
- oracle分析函式,keep and over解說Oracle函式
- SYS_CONTEXT函式的用法(ZT)Context函式
- 面試官:來說一說Go語言的函式呼叫慣例面試Go函式
- apolloxlua標準庫require函式說明UI函式
- 說說Python中的幾個內建函式和表推導Python函式
- 【原創】SYS_CONTEXT函式的用法Context函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- jQuery - 函式 $.ajaxSetup 的說明和使用jQuery函式
- Python基礎之白話說函式Python函式
- 成員函式的說明和使用(轉)函式
- 細說函式返回值與引數函式
- jQuery - 函式 $.extend 和 $.fn.extend 的說明jQuery函式
- 細說JavaScript非同步函式發展歷程JavaScript非同步函式
- Go plan9 彙編:說透函式棧Go函式
- python中encode和decode函式說明Python函式
- php中var_dump()函式的詳解說明PHP函式
- (cljs/run-at (JSVM. :all) "細說函式")JS函式