SYS_CONTEXT函數可以獲取很多有用的信息。 SELECT SYS_CONTEXT('USERENV','MODULE') C1 ,SYS_CONTEXT('USERENV','DB_NAME') C2 ,SYS_CONTEXT('USERENV','HOST') C3 ,SYS_CONTEXT('USERENV','IP_ADDRESS') C4 ,SYS_CONTEXT('USERENV','OS_USER') C5 ,SYS_CONTEXT('USERENV','SERVER_HOST') C6 FROM DUAL; C1 C2 C3 C4 C5 C6 -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- TOAD 10.0.0.41 zeta SAAMNT/MWWS248 10.225.11.51 wugy oracletest02 另外,除了系統內置的USERENV名稱空間外,還可以在package中設置自定義的名稱空間和屬性。 -- 創建一個package來操作context CREATE OR REPLACE PACKAGE pkg_context AS PROCEDURE set_context(p_ns VARCHAR2, attr VARCHAR2, val VARCHAR2); FUNCTION get_context(p_ns VARCHAR2, attr VARCHAR2) RETURN VARCHAR2; END pkg_context; CREATE OR REPLACE PACKAGE BODY pkg_context AS PROCEDURE set_context(p_ns VARCHAR2, attr VARCHAR2, val VARCHAR2) AS BEGIN DBMS_SESSION.SET_CONTEXT(p_ns, attr, val); END set_context; FUNCTION get_context(p_ns VARCHAR2, attr VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN SYS_CONTEXT(p_ns, attr); END get_context; END pkg_context; -- 用該package創建一個上下文context CREATE CONTEXT zeta_context USING pkg_context; -- 測試 BEGIN pkg_context.set_context('zeta_context', 'author', 'wugy'); -- namespace必須用剛剛創建的context對象 DBMS_OUTPUT.PUT_LINE(pkg_context.get_context('zeta_context', 'author')); END;