組み込みのDBMS_SESSIONパッケージを使用すると、PL/SQLを使用して、SQL ALTER SESSIONおよびSET ROLEステートメントやその他のセッション情報にアクセスできます。
サブプログラム
サブプログラム | 説明 |
CLEAR_ALL_CONTEXTプロシージャ | 指定した名前空間のすべてのコンテキスト属性をクリアします。 |
CLEAR_CONTEXTプロシージャ | 指定された名前空間の特定のコンテキスト属性をクリアします。 |
LIST_CONTEXTプロシージャ | 現在のセッションのアクティブな名前空間とコンテキストのリストを返します。 |
SET_CONTEXTプロシージャ | コンテキスト属性の値を設定またはリセットします。 |
SET_ROLEプロシージャ | 現在のコンテキストのロールを設定します。 |
睡眠手続き | 指定した期間、現在のセッションを中断します。 |
CLEAR_ALL_CONTEXT
このストアドプロシージャは、指定した名前空間のすべてのコンテキスト属性をクリアするために使用されます。
構文
<bx id="1" type="code" text="code id=" aoqmel "title=" "uuuid=" ljy7b26obe27m3mmaq "code=" DBMS_SESSION.CLEAR_ALL_CONTEXT
名前空間VARCHAR2);"data-tag=" codeblock "outputclass=" language-sql ""/>DBMS_SESSION.CLEAR_ALL_CONTEXT (
名前空間VARCHAR2); Parameters
パラメーター | 説明 |
namespace | コンテキストをクリアする名前空間。 |
例
次の例は、指定したコンテキストのすべての属性値をクリアする方法を示しています。
EXEC DBMS_SESSION.CLEAR_ALL_CONTEXT('test_ctx');CLEAR_CONTEXT
このストアドプロシージャは、指定された名前空間の特定のコンテキスト属性をクリアするために使用されます。
構文
<bx id="1" type="code" text="code id=" 31300393221js "title=" "uuid=" ljy7b66xflkewcgtofp "code=" DBMS_SESSION.CLEAR_CONTEXT
名前空間VARCHAR2、client_identifier IN VARCHAR2 DEFAULT NULL,
属性INVARCHAR2 DEFAULT NULL);"data-tag=" codeblock "outputclass=" language-sql ""/>DBMS_SESSION.CLEAR_CONTEXT (
名前空間VARCHAR2、
client_identifier IN VARCHAR2 DEFAULT NULL,
属性IN VARCHAR2デフォルトNULL); Parameters
パラメーター | 説明 |
namespace | コンテキストをクリアする名前空間。 |
client_identifier | (オプション) パラメータは、Oracleとの互換性のために提供されます。 デフォルト値は NULL です。 |
attribute | (オプション) 名前空間内の特定の属性の名前。 デフォルト値は NULL です。 |
例
次の例は、指定したコンテキストの特定の属性値をクリアする方法を示しています。
<bx id="1" type="code" text="code id=" gz69xz "title=" "uuid=" ljz2bjsz7hbxbp0e974 "code=" CREATE CONTEXT test_ctx USING ctx_pkg;
DECLARE
val VARCHAR2(20);
開始
DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1');
val := SYS_CONTEXT('test_ctx', 'a');
DBMS_OUTPUT.PUT_LINE (test_ctxの 'aは: '| | val);
DBMS_SESSION.CLEAR_CONTEXT('test_ctx', NULL, 'a');
val := SYS_CONTEXT('test_ctx', 'a');
IF val IS NULL THEN
DBMS_OUTPUT.PUT_LINE ('test_ctxのaがクリアされました ');
エンドIF;
エンド;
test_ctxの -- aは: 1
-- test_ctxのaがクリアされました "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE CONTEXT test_ctx USING ctx_pkg;
DECLARE
val VARCHAR2(20);
開始
DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1');
val := SYS_CONTEXT('test_ctx', 'a');
DBMS_OUTPUT.PUT_LINE (test_ctxの 'aは: '| | val);
DBMS_SESSION.CLEAR_CONTEXT('test_ctx', NULL, 'a');
val := SYS_CONTEXT('test_ctx', 'a');
IF val IS NULL THEN
DBMS_OUTPUT.PUT_LINE ('test_ctxのaがクリアされました ');
エンドIF;
エンド;
test_ctxの -- aは: 1
-- test_ctxのaがクリアされましたLIST_CONTEXT
このストアドプロシージャは、現在のセッションのアクティブな名前空間とコンテキストのリストを返すために使用されます。
構文
このストアドプロシージャは、カスタム型をパラメータとして使用します。 次の例は、カスタム型とDBMS_SESSION.LIST_CONTEXTプロシージャの構文を示しています。
<bx id="1" type="code" text="code id=" 50c41ed422d04 "title=" "uuid=" ljy7b9y2wtv230ez56 "code=" TYPE AppCtxRecTyp IS RECORD ()
名前空間VARCHAR2(30) 、属性VARCHAR2(30) 、値VARCHAR2(256);
タイプAppCtxTabTypはAppCtxRecTypのテーブルです;
DBMS_SESSION.LIST_CONTEXT ()
リストアウトAppCtxTabTyp、size OUT NUMBER);"data-tag=" codeblock "outputclass=" language-sql ""/>TYPE AppCtxRecTyp IS RECORD (
名前空間VARCHAR2(30) 、
属性VARCHAR2(30) 、
値VARCHAR2(256);
タイプAppCtxTabTypはAppCtxRecTypのテーブルです;
DBMS_SESSION.LIST_CONTEXT ()
リストアウトAppCtxTabTyp、
サイズアウト数); Parameters
パラメーター | 説明 |
list | 現在のセッション内の名前空間、属性、および値のリスト。 |
size | リスト内のエントリの数。 |
例
次の例は、コンテキスト属性を指定し、LIST_contextストアドプロシージャを使用して、現在のセッションのアクティブな名前空間、コンテキスト属性、および値を返す方法を示しています。
<bx id="1" type="code" text="code code=" ctx_pkgを使用してコンテキストを作成します。DECLARE
att DBMS_SESSION.AppCtxTabTyp;
num NUMBER;
開始
-後でリストできるいくつかの値をコンテキストに設定します
DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1');
DBMS_SESSION.SET_CONTEXT('test_ctx', 'b', '2');
-コンテキスト内のすべての属性をリストする
DBMS_SESSION.LIST_CONTEXT(att、num);
DBMS_OUTPUT.PUT_LINE (コンテキスト内のattrsの数は: '| | num);
DBMS_OUTPUT.PUT_LINE('The fisrt attr is: '| att(1).attribute);
DBMS_OUTPUT.PUT_LINE('The fisrt value is: '| att(1).value);
DBMS_OUTPUT.PUT_LINE('The second attr is: '| att(2).attribute);
DBMS_OUTPUT.PUT_LINE('2番目の値は:' | att(2).value);
エンド;
-コンテキスト内のattrsの数は: 2
-- fisrt attrは次のとおりです。-- fisrtの価値は次のとおりです: 1
-2番目のattrは次のとおりです。b
-2番目の値は次のとおりです。2 "id=" 5e2lzx "title=" "uuid=" ljz21jnsihao77oq3 "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE CONTEXT _testctx USING ctx_pkg;
DECLARE
att DBMS_SESSION.AppCtxTabTyp;
num NUMBER;
開始
-後でリストできるいくつかの値をコンテキストに設定します
DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1');
DBMS_SESSION.SET_CONTEXT('test_ctx', 'b', '2');
-コンテキスト内のすべての属性をリストする
DBMS_SESSION.LIST_CONTEXT(att、num);
DBMS_OUTPUT.PUT_LINE (コンテキスト内のattrsの数は: '| | num);
DBMS_OUTPUT.PUT_LINE('最初のattrは:' | att(1).attribute);
DBMS_OUTPUT.PUT_LINE('最初の値は:' | att(1).value);
DBMS_OUTPUT.PUT_LINE('The second attr is: '| att(2).attribute);
DBMS_OUTPUT.PUT_LINE('2番目の値は:' | att(2).value);
エンド;
-コンテキスト内のattrsの数は: 2
-最初のattrは: a
-最初の値は: 1
-2番目のattrは次のとおりです。b
-- 2番目の値は: 2 SET_CONTEXT
このストアドプロシージャは、コンテキスト属性の値を設定またはリセットするために使用されます。
構文
<bx id="1" type="code" text="code id=" 702f2e43223jd "title=" "uuid=" ljy7bbl4jkdveugmsl "code=" DBMS_SESSION.SET_CONTEXT ()
名前空間VARCHAR2、属性のVARCHAR2、値IN VARCHAR2、ユーザー名VARCHAR2デフォルトNULL、client_id IN VARCHAR2 DEFAULT NULL);"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SESSION.SET_CONTEXT (
名前空間VARCHAR2、
属性のVARCHAR2、
値IN VARCHAR2、
ユーザー名VARCHAR2デフォルトNULL、
client_id IN VARCHAR2 DEFAULT NULL); Parameters
パラメーター | 説明 |
namespace | コンテキストを設定する名前空間。 |
attribute | 設定するコンテキスト属性。 |
value | 属性値。 |
username | (オプション) パラメータは、Oracleとの互換性のために提供されます。 デフォルト値は NULL です。 |
client_id | (オプション) パラメータは、Oracleとの互換性のために提供されます。 デフォルト値は NULL です。 |
例
次の例は、SET_CONTEXTストアドプロシージャを使用してcontext属性の値を設定する方法を示しています。
<g id="1" type="code" text="code id=" wqrggx "title=" "uuid=" ljz1fasw9fh068k32u8 "code=" CREATE CONTEXT test_ctx USING ctx_pkg;
DECLARE
val varchar(20);
開始
DBMS_SESSION.SET_CONTEXT('test_ctx' 、'attr' 、'1');
val := SYS_CONTEXT('test_ctx' 、'attr');
DBMS_OUTPUT.PUT_LINE('attr is:'| | val);
エンド;
-- attr is:1 "data-tag=" codeblock "outputclass=" language-plsql "">CREATE CONTEXT test_ctx USING ctx_pkg;
DECLARE
val varchar(20);
開始
DBMS_SESSION.SET_CONTEXT('test_ctx' 、'attr' 、'1');
val := SYS_CONTEXT('test_ctx' 、'attr');
DBMS_OUTPUT.PUT_LINE('attr is:'| | val);
エンド;
-- attrは: 1 SET_ROLE
このストアドプロシージャは、現在のコンテキストのロールを設定するために使用されます。
構文
<bx id="1" type="code" text="code id=" 091e252322clf "title=" "uuid=" ljy7bdhs27gxlrtki81 "code=" DBMS_SESSION.SET_ROLE ()
role_cmd IN VARCHAR2);"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SESSION.SET_ROLE (
role_cmdでVARCHAR2); Parameters
パラメーター | 説明 |
role_cmd | ロール名。 このパラメーターの値は文字列です。 |
例
次の例は、セッションコンテキストのロールを設定する方法を示しています。
<bx id="1" type="code" text="code id=" 06crek "title=" "uuid=" ljy7vdpic3c3quvygq "code=" CREATE USER test_ctx_usrによって識別されます"passwd"
DECLARE
usr varchar(20);
開始
DBMS_SESSION.SET_ROLE('test_ctx_usr ');
usr := SYS_CONTEXT('USERENV', 'SESSION_USER');
-セッションユーザーIS: test_ctx_usr
DBMS_OUTPUT.PUT_LINE('SESSION USER IS: '| | usr);
END;"data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE USER test_ctx_usr IDENTIFIED BY "passwd";
DECLARE
usr varchar(20);
開始
DBMS_SESSION.SET_ROLE('test_ctx_usr ');
usr := SYS_CONTEXT('USERENV', 'SESSION_USER');
-セッションユーザーIS: test_ctx_usr
DBMS_OUTPUT.PUT_LINE('SESSION USER IS: '| | usr);
エンド; SLEEP
このストアドプロシージャは、指定された期間、現在のセッションを一時停止するために使用されます。
構文
<bx id="1" type="code" text="code id=" 18d98cc32291r "title=" "uuid=" ljy7bfbyb4qcpmbvm1d "code=" DBMS_SESSIONS.LEEP (
秒数);"data-tag=" codeblock "outputclass=" language-plsql ""/> DBMS_SESSIONS.LEEP (
秒数); Parameters
パラメーター | 説明 |
秒 | セッションが中断されている期間。 単位は秒です。 |
例
次の例は、セッションを指定した期間中断する方法を示しています。
EXEC DBMS_SESSIONS.LEEP (2);