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」としています。