REQUEST ステートメントは、ロックIDまたはLockハンドルを指定して、指定されたロックモードのロックを取得するために使用されます。
構文
DBMS_LOCK.REQUEST(
id IN INTEGER ||
lockhandle IN VARCHAR2,
lockmode IN INTEGER DEFAULT X_MODE,
timeout IN INTEGER DEFAULT MAXWAIT,
release_on_commit IN BOOLEAN DEFAULT FALSE)
RETURN INTEGER;
パラメータの説明
パラメータ |
説明 |
|---|---|
| id || lockhandle | ロックIDまたはLockハンドル。 |
| lockmode | 取得するロックモード。 |
| timeout | ロック競合が発生した場合に待機する時間(単位:秒)。タイムアウト後、1を返します。 |
| release_on_commit | TRUE に設定すると、トランザクションのコミットまたはロールバック時にロックが解放されます。それ以外の場合は、ユーザーが手動で解放するか、セッションが切断されるまで保持されます。現在のバージョンでは、このパラメータは TRUE および FALSE をサポートしています。デフォルトは FALSE です。relase_on_commit = TRUE の場合、RELEASEサブルーチンを使用してロックを解放することは現在サポートされていません。 |
戻り値
返り値 |
説明 |
|---|---|
| 0 | 成功 |
| 1 | タイムアウト |
| 2 | デッドロック |
| 3 | パラメータエラー |
| 4 | すでにロックがかけられている |
| 5 | 無効なLockハンドル |
例
obclient> DELIMITER /
obclient> DECLARE
my_lockname VARCHAR2(100) :='test01';
my_lockhandle VARCHAR2(200);
my_lock_output NUMBER;
BEGIN
DBMS_LOCK.ALLOCATE_UNIQUE(lockname => my_lockname,lockhandle => my_lockhandle);
my_lock_output := DBMS_LOCK.REQUEST(my_lockhandle,6, 60, FALSE);
END;/
Query OK, 1 row affected