ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
ロック(排他制御)を取得する(DBMS_LOCK)
スポンサード リンク

ユーザー・ロックを取得するには、DBMS_LOCKパッケージを使用します。

DBMS_LOCKパッケージは、ORACLEのロック機能と同等なので、デッドロックの検出などOracleのロック機能を全て備えています。

DBMS_LOCKパッケージの主なプロシージャまたはファンクション
ALLOCATE_UNIQUE(
          ロック名,
          ロックID);
ALLOCATE_UNIQUEプロシージャは、指定したロック名のロックIDを取得し返します。
REQUEST( ロックID,
        ロックモード,
        タイムアウト,
        解放フラグ );

REQUESTファンクションは、指定したロックIDのロックを取得します。

ロックモードには、定数「X_MODE 」または数値「6」を指定します。

タイムアウトには、ロック取得を待機する最大時間を秒数で指定します。

解放フラグには、TRUEを指定するとコミットまたはロールバックでロックが解放されます。

ファンクションの戻り値は以下になります。
  0 : 成功
  1 : タイムアウト
  2 : デッドロック
  3 : パラメータエラー
  4 : 指定されたロックをすでに所有している。
  5 : 不正なロックID

RELEASE( ロックID ) RELEASEファンクションは、指定したロックIDのロックを明示的に解放します。

ファンクションの戻り値は以下になります。
  0 : 成功
  3 : パラメータエラー
  4 : 指定されたロックは所有してない。
  5 : 不正なロックID


例1) ロック名「TEST_LOCK」でロック取得〜解放まで

declare

lock_id varchar2(128);
status integer;

begin

-- ロック名「TEST_LOCK」でロックIDを取得
dbms_lock.allocate_unique('TEST_LOCK',lock_id);
-- タイムアウト30秒でロックを要求する。
status:=dbms_lock.request(lock_id,6,30,true);
-- ロックを解放する。
status:=dbms_lock.release(lock_id);

end;



スポンサード リンク


スリープする(DBMS_LOCK.SLEEP)
文字列を暗号化する(10g)( DBMS_CRYPTO.ENCRYPT )
文字列を復号化する(10g)( DBMS_CRYPTO.DECRYPT )
PL/SQLコードを隠蔽(暗号化)する(WRAP)
ランダムな数値や文字列を取得する( DBMS_RANDOM )
アラート通知(DBMS_ALERT)
ジョブスケジューリング(DBMS_JOB)
ロック(排他制御)を取得する(DBMS_LOCK)

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ