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

ORACLE SQL リファレンス

Web oracle.se-free.com
アラート通知(DBMS_ALERT)
スポンサード リンク

アラート通知させるには、DBMS_ALERTパッケージを使用します。

DBMS_ALERTパッケージは「SYS」ユーザーからEXECUTE権限が付与されている必要があります。

DBMS_ALERTパッケージのプロシージャ
REGISTER( アラート名 ); アラート名でアラートを登録します。

セッションは、必要な数のアラートを登録できます。

アラートが不要になった場合は、REMOVEをコールしてそのアラートの登録を削除する必要があります。
REMOVE( アラート名 ); アラート名で登録されたアラートを削除します。
REMOVEALL このセッションに関連するアラートを登録リストからすべて削除します。

セッションですべてのアラートが不要になったときは、必ずこのプロシージャを使用します。

このプロシージャは、セッションの中でこのパッケージを初めて参照すると、自動的にコールされます。

したがって、前のセッションが異常終了した場合でも、そのセッションに関連するアラートが現在のセッションに影響を与えることはありません。

このプロシージャは常にコミットを実行します。
SET_DEFAULTS( ポーリング間隔 ) ポーリング・ループが必要な場合は、このプロシージャを使用して、スリープするポーリング間隔(秒)を指定します。 デフォルトは5秒
SIGNAL( アラート名 ,
   送信メッセージ )
指定したアラート名、送信メッセージ(1800バイト以下)でアラートを通知します。アラート通知は、コミットした後に有効になります。
WAITONE( アラート名,
   受信メッセージ,
   ステータス,
   タイムアウト )
指定したアラート名で、通知されたアラートを受け取ります。

受け取ったアラートメッセージは、受信メッセージに格納されます。

タイムアウトで指定した時間(秒単位)経過して通知されない場合は、処理が復帰します。
タイムアウトにゼロを指定した場合、アラート通知が無い場合、即時に処理が復帰します。

ステータスには、処理結果が返されます。
  0 : アラート受け取り完了
  1 : タイムアウト発生
WAITANY( アラート名,
    受信メッセージ,
    ステータス,
    タイムアウト )
現行のセッションが登録されているすべてのアラートを対象として、通知されたアラートを受け取ります。

受け取ったアラートのアラート名は、アラート名に格納されます。

受け取ったアラートメッセージは、受信メッセージに格納されます。

タイムアウトで指定した時間(秒単位)経過して通知されない場合は、処理が復帰します。
タイムアウトにゼロを指定した場合、アラート通知が無い場合、即時に処理が復帰します。

ステータスには、処理結果が返されます。
  0 : アラート受け取り完了
  1 : タイムアウト発生


スポンサード リンク


例1) アラート送受信
    送信側と受信側のPLSQLをそれぞれ別のSQLPLUSを起動して実行します。
  ●アラート送信側

begin

-- アラートをアラート名「TEST_ALERT」で送信する。
dbms_alert.signal('TEST_ALERT','アラート メッセージ!!');
commit;

end;

  メッセージ「アラート メッセージ!!」を送信している。

 ●アラート受信側

declare

status integer;
message varchar2(100);

begin

-- アラート名「TEST_ALERT」を登録
dbms_alert.register('TEST_ALERT');

-- アラート名「TEST_ALERT」からのメッセージを受け取る。タイムアウトは10秒
dbms_alert.waitone('TEST_ALERT',message,status,10);

if status = 1 then
 dbms_output.put_line('タイムアウトが発生しました!!');
else
 -- 受信メッセージを表示する
 dbms_output.put_line(message);
end if;

-- アラートを削除する
dbms_alert.remove('TEST_ALERT');

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へ