Oracle SQL 関数 : SYS_CONTEXT : 現行インスタンスのコンテキストに関連付けられた値取得
VC_Ret := SYS_CONTEXT( Namespace, Para ); SYS_CONTEXT 関数は現行インスタンスのコンテキストに関連付けられた値を取得します。 Namespace : 現行インスタンスのコンテキスト名 Para : コンテキスト内の名前
SYS_CONTEXT 関数に現行インスタンスのコンテキスト名を指定しますが、
用途としては、現在のセッションの情報を取得するために使用します。
現在のセッションの名前は 'USERENV' を指定し、
このネームスペースには以下の様なパラメータがあります。
'CURRENT_SCHEMA' : 現在アクティブなデフォルトのスキーマの名前 'CURRENT_SCHEMAID' : 現在アクティブなデフォルトのスキーマの識別ID 'DB_NAME' : DB_NAME初期化パラメータで指定されたデータベース名 'SESSION_USERID' : セッション・ユーザー(ログオンしたユーザー)のID 'SESSION_USER' : セッション・ユーザー(ログオンしたユーザー)の名前 'LANGUAGE' : 現行のセッションで使用している言語(language)および地域(territory) ※これ以外にも各種のパラメータがありますが、使用するのはこれぐらいではないでしょうか。
上記のパラメータを設定し、SQLで実行した結果を以下に記します。
SQL> COLUMN CURRENT_SCHEMA FORMAT A8; SQL> COLUMN CURRENT_SCHEMAID FORMAT A8; SQL> COLUMN USER_ID FORMAT A8; SQL> COLUMN USER_NAME FORMAT A8; SQL> COLUMN LANGUAGE FORMAT A30; SQL> COLUMN DB_NAME FORMAT A8; SQL> SELECT 2 SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA' ) CURRENT_SCHEMA 3 ,SYS_CONTEXT('USERENV', 'CURRENT_SCHEMAID') CURRENT_SCHEMAID 4 ,SYS_CONTEXT('USERENV', 'SESSION_USERID' ) USER_ID 5 ,SYS_CONTEXT('USERENV', 'SESSION_USER' ) USER_NAME 6 ,SYS_CONTEXT('USERENV', 'LANGUAGE' ) LANGUAGE 7 ,SYS_CONTEXT('USERENV', 'DB_NAME' ) DB_NAME 8 FROM DUAL; CURRENT_ CURRENT_ USER_ID USER_NAM LANGUAGE DB_NAME -------- -------- -------- -------- ------------------------------ -------- TEST 47 47 TEST JAPANESE_JAPAN.JA16SJIS XE
テストで使っているユーザIDは「TEST」としています。