サーチ…


構文

  • CREATE [OR REPLACE] CONTEXT名前空間USING [schema。]パッケージ。
  • CREATE [OR REPLACE] CONTEXT名前空間USING [スキーマ。]パッケージINITIALIZED EXTERNALLY;
  • CREATE [OR REPLACE] CONTEXT名前空間USING [スキーマ。]パッケージINITIALIZED GLOBALLY;
  • CREATE [OR REPLACE] CONTEXT名前空間USING [スキーマ。]パッケージACCESSED GLOBALLY;

パラメーター

パラメータ詳細
OR REPLACE 既存のコンテキスト名前空間を再定義する
名前空間コンテキストの名前 - これはSYS_CONTEXTへの呼び出しの名前空間です
スキーマパッケージの所有者
パッケージコンテキスト属性を設定またはリセットするデータベースパッケージ。注:コンテキストを作成するためにデータベースパッケージが存在する必要はありません。
INITIALIZED コンテキストを設定できるOracle Database以外のエンティティを指定します。
EXTERNALLY OCIインタフェースでコンテキストを初期化できるようにします。
GLOBALLY セッションを確立するときにLDAPディレクトリがコンテキストを初期化できるようにします。
ACCESSED GLOBALLY インスタンス全体でコンテキストにアクセスできるようにします。同じクライアントIDを持つ限り、複数のセッションで属性値を共有できます。

備考

Oracleのマニュアル(12cR1): http ://docs.oracle.com/database/121/SQLRF/statements_5003.htm

コンテキストを作成する

CREATE CONTEXT my_ctx USING my_pkg;

これにより、データベースパッケージmy_pkg内のルーチンによってのみ設定できるコンテキストが作成されます。たとえば、次のようになります。

CREATE PACKAGE my_pkg AS
  PROCEDURE set_ctx;
END my_pkg;

CREATE PACKAGE BODY my_pkg AS
  PROCEDURE set_ctx IS
  BEGIN
    DBMS_SESSION.set_context('MY_CTX','THE KEY','Value');
    DBMS_SESSION.set_context('MY_CTX','ANOTHER','Bla');
  END set_ctx;
END my_pkg;

今、セッションがこれを行う場合:

my_pkg.set_ctx;

これでキーの値を取得できるようになりました:

SELECT SYS_CONTEXT('MY_CTX','THE KEY') FROM dual;

Value


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow