SET_CONTEXT プロシージャは、セッションローカル、グローバル初期化、外部初期化、およびグローバルアクセスの4種類のコンテキストを設定するために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
DBMS_SESSION.SET_CONTEXT (
namespace VARCHAR2,
attribute VARCHAR2,
value VARCHAR2,
username VARCHAR2,
client_id VARCHAR2 );
パラメータの説明
| パラメータ | 説明 |
|---|---|
| namespace | 設定するアプリケーションコンテキストのネームスペース名を指定します。長さは128バイトまでです。 |
| attribute | 設定するアプリケーションコンテキストのプロパティを指定します。長さは128バイトまでです。 |
| value | 設定するアプリケーションコンテキストの値を指定します。長さは4KBまでです。 |
| username | アプリケーションコンテキストのデータベースユーザー名プロパティを指定します。デフォルト値はNULLです。 |
| client_id | アプリケーションコンテキストのアプリケーションのclient_idプロパティを指定します(最大64バイト)。デフォルト値はNULLです。 |
説明
SET_CONTEXT プロシージャの5つのパラメータのうち、最初の3つのパラメータのみが必須です。最後の2つのパラメータはオプションであり、グローバルアクセスのコンテキストでのみ使用されます。
使用方法
usernameパラメータは有効なSQL識別子である必要があります。client_idパラメータは最大64バイトの文字列である必要があります。大文字と小文字を区別し、set_identifierで提供されたパラメータと一致している必要があります。namespaceパラメータがグローバルコンテキストネームスペースの場合、usernameパラメータはセッション内の現在のデータベースユーザー名とマッチし、client_idパラメータはセッション内の現在のclient_idとマッチします。これらのパラメータが設定されていない場合、NULLと見なされ、その場合は任意のユーザーがコンテキスト値を確認できます。SET_CONTEXTプロシージャは、信頼できるパッケージによって直接または間接的に呼び出されなければなりません。ネームスペースにパラメータ値が設定されている場合、
SET_CONTEXTはその値を上書きします。SET_CONTEXTプロシージャによるコンテキスト値の変更は即時に反映され、その後SYS_CONTEXTを使用して同じ値を呼び出すと最新の値が返されます。
例
CREATE PROCEDURE emp_attr(empname IN VARCHAR2, empno IN NUMBER) IS
BEGIN
DBMS_SESSION.SET_CONTEXT('emp_context',empname, empno);
END;