構文

用途
SYS_CONTEXTは、現在のコンテキストnamespaceに関連付けられたparameterの値を戻します。このファンクションは、SQL文およびPL/SQL文で使用できます。SYS_CONTEXTはローカルに実行する必要があります。
namespaceおよびparameterには、文字列、またはネームスペースまたは属性を指定する文字列に変換する式を指定できます。namespaceおよびparameterにリテラル引数を指定し、(SQL文で指定されたPL/SQLファンクション内ではなく)SQL文で明示的にSYS_CONTEXTを使用した場合は、SYS_CONTEXTファンクションを起動するコール元の各サイトで、SQL文の実行ごとに1回のみSYS_CONTEXTが評価されます。
コンテキストnamespaceはすでに作成されている必要があり、関連付けられたparameterおよびその値は、DBMS_SESSION.set_contextプロシージャを使用して設定されている必要があります。namespaceは有効なSQL識別子である必要があります。parameter名には、すべての文字列を指定できます。大/小文字は区別されず、長さは30バイト以下です。
戻り値のデータ型はVARCHAR2です。戻り値のデフォルトの最大サイズは256バイトです。オプションのlengthパラメータを指定して、このデフォルトを上書きできます。このパラメータは、NUMBERか、または暗黙的にNUMBERに変換可能な値である必要があります。有効な値の範囲は、1から4000バイトです。無効な値を指定すると、Oracle Databaseはその値を無視してデフォルト値を使用します。
Oracleは、次の組込みネームスペースを提供しています。
USERENV: 現在のセッションを説明します。ネームスペースUSERENVの事前定義パラメータについては、表5-11を参照してください。
SYS_SESSION_ROLES: 指定されたロールがセッションに対して現在有効かどうかを示します。このネームスペースは、Oracle Database 11gリリース2 (11.2.0.4)以上で使用できます。
|
関連項目:
|
例
次の例では、データベースにログインしたユーザー名を戻します。
CONNECT OE
Enter password: password
SELECT SYS_CONTEXT ('USERENV', 'SESSION_USER')
FROM DUAL;
SYS_CONTEXT ('USERENV', 'SESSION_USER')
------------------------------------------------------
OE
次の例では、SESSION_ROLESデータ・ディクショナリ・ビューを問い合せて、セッションに対して現在有効なロールがRESOURCEのみであることを示します。その後で、SYS_CONTEXTファンクションを使用して、セッションに対してRESOURCEロールが現在有効であり、DBAロールが有効でないことを示します。
CONNECT OE
Enter password: password
SELECT role FROM session_roles;
ROLE
--------
RESOURCE
SELECT SYS_CONTEXT('SYS_SESSION_ROLES', 'RESOURCE')
FROM DUAL
SYS_CONTEXT('SYS_SESSION_ROLES','RESOURCE')
--------------------------------------
TRUE
SELECT SYS_CONTEXT('SYS_SESSION_ROLES', 'DBA')
FROM DUAL;
SYS_CONTEXT('SYS_SESSION_ROLES','DBA')
--------------------------------------
FALSE
|
注意: この機能を簡単に実演する場合、これらの例では、通常デプロイされたシステムが使用するパスワード管理技術を実行しません。本番環境では、Oracle Databaseのパスワード管理ガイドラインに従って、サンプル・アカウントを無効にします。パスワード管理ガイドラインおよびその他のセキュリティ推奨事項については、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
次の例では、hr_appsの作成時に、コンテキストhr_appsに関連付けられたPL/SQLパッケージの属性group_noに対する値として設定されたグループ番号を戻します。
SELECT SYS_CONTEXT ('hr_apps', 'group_no') "User Group"
FROM DUAL;
表5-11 ネームスペースUSERENVの事前定義パラメータ
| パラメータ | 戻り値 |
|---|---|
|
|
モジュール(アプリケーション名)内の位置を識別します。 |
|
|
監査をトリガーによって実行したSQLのカーソルIDを戻します。このパラメータは、ファイングレイン監査環境では無効です。このパラメータをファイングレイン監査環境で指定すると、Oracle Databaseは常に |
|
|
認証で使用する識別を戻します。次のリストでは、ユーザーのタイプの後に、戻される値を示します。
|
|
|
ログイン・ユーザーの認証に使用されるデータを戻します。X.503認証セッションでは、このフィールドはHEX2形式での認証のコンテキストを戻します。 注意: 構文の |
|
|
認証方式を戻します。次のリストでは、ユーザーのタイプの後に、戻される方法を示します。
|
|
|
現行のセッションがOracle Databaseのバックグラウンド・プロセスで確立された場合、そのセッションのジョブIDを戻します。セッションがバックグラウンド・プロセスで確立されていない場合は、NULLを戻します。 |
|
|
アプリケーションによって設定された識別子を、 |
|
|
|
|
|
ファイングレイン監査のバインド変数。この属性は、ファイングレイン監査機能のイベント・ハンドラ内のみで指定できます。 |
|
|
現行のエディションの識別子。 |
|
|
現行のエディションの名前。 |
|
|
現在アクティブなデフォルトのスキーマの名前。この値は、セッションの存続期間中に 注意: すべての種類(ログオン・トリガーを除く)のストアドPL/SQLユニット内から、SQL文 |
|
|
現在アクティブなデフォルトのスキーマの識別子。 |
|
|
|
|
|
ファイングレイン監査または行レベルのセキュリティ(RLS)ポリシーのファンクションまたはイベント・ハンドラをトリガーする現行のSQL文の長さ。この属性は、ファイングレイン監査機能のイベント・ハンドラ内のみで指定できます。 |
|
|
現在アクティブな権限を持つデータベース・ユーザー名。この名前は、アクティブな任意の定義者権限オブジェクトの所有者を反映するよう、セッション中に変更される場合があります。定義者権限オブジェクトがアクティブでない場合、 |
|
|
権限が現在アクティブになっているデータベース・ユーザーの識別子。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
データベース・リンク・セッションのソースを戻します。具体的には、次の書式の文字列を戻します。
SOURCE_GLOBAL_NAME=dblink_src_global_name, DBLINK_NAME=dblink_name, SOURCE_AUDIT_SESSIONID=
それぞれの意味は、次のとおりです。
|
|
|
現行の監査エントリ番号を戻します。監査エントリIDの順序は、ファイングレイン監査レコードと通常の監査レコードで共通です。この属性を分散SQL文で使用することはできません。正しい監査エントリ識別子は、標準またはファイングレイン監査の監査ハンドラを介してのみ参照できます。 |
|
|
ユーザーのエンタープライズ全体の識別を戻します。
属性の値はプロキシ方式によって異なります。
|
|
|
現行のセッションがクライアントのフォアグラウンド・プロセスで確立された場合、そのセッションのジョブIDを戻します。セッションがフォアグラウンド・プロセスで確立されていない場合は、NULLを戻します。 |
|
|
コンテキストへのグローバルなアクセスによって、システム・グローバル領域で使用された数値を戻します。 |
|
|
エンタープライズ・ユーザー・セキュリティ(EUS)ログインの場合は、Oracle Internet Directoryからグローバル・ユーザーIDを戻します。その他のすべてのログインの場合は、NULLを戻します。 |
|
|
接続中のクライアントのホスト・マシン名を戻します。 |
|
|
データベースでユーザーのスキーマを作成した方法を戻します。特に、
|
|
|
現行のインスタンスのインスタンス識別番号を戻します。 |
|
|
インスタンス名。 |
|
|
接続中のクライアントのマシンのIPアドレスを戻します。クライアントとサーバーが同じマシン上にあり、接続にIPv6アドレスが使用されている場合は、 |
|
|
オペレーティング・システムまたはパスワード・ファイルによって、ユーザーがDBA権限を持っていると認証された場合、 |
|
|
言語名の略称を戻します。これは、既存の' |
|
|
現行のセッションで使用している言語(language)および地域(territory)を、データベース・キャラクタ・セット(character set)も含めて次の書式で戻します。 language_territory.characterset |
|
|
|
|
|
接続文字列の' |
|
|
現行のセッションの現行のカレンダを戻します。 |
|
|
現行のセッションの通貨を戻します。 |
|
|
セッションの日付書式を戻します。 |
|
|
日付の表示に使用される言語を戻します。 |
|
|
|
|
|
現行のセッションの地域を戻します。 |
|
|
データベース・セッションを開始するクライアント・プロセスのオペレーティング・システム・ユーザー名を戻します。 |
|
|
行レベルのセキュリティ(RLS)・ポリシーのファンクションの実行者。 |
|
|
プロキシ・ユーザーがエンタープライズ・ユーザーの場合に、Oracle Internet Directory DNを戻します。 |
|
|
|
|
|
|
|
|
インスタンスを実行しているマシンのホスト名。 |
|
|
任意のセッションで接続しているサービスの名前を戻します。 |
|
|
セッション・エディションの識別子。 |
|
|
セッション・エディションの名前。 |
|
|
ログオン時のデータベース・ユーザーの名前。エンタープライズ・ユーザーの場合、スキーマを戻します。その他のユーザーの場合、データベース・ユーザー名を戻します。この値は、セッションの存続期間中は同じです。 |
|
|
ログオン時のデータベース・ユーザーの識別子。 |
|
|
監査セッション識別子を戻します。この属性を分散SQL文で使用することはできません。 |
|
|
セッションID。 |
|
|
文の監査の識別子を戻します。 |
|
|
現行のセッションのクライアントに対するオペレーティング・システムの識別子を戻します。分散SQL文では、この属性はローカル・セッションの識別子を戻します。分散環境では、リモートの |
表5-12に、非推奨になったネームスペースUSERENVのパラメータを示します。これらのパラメータはどれも指定しないでください。かわりに、「コメント」列で提案する代替手段を使用します。