WAITONE プロシージャー - 指定されたアラートを待機する
WAITONE プロシージャーは、指定されたアラートの発生を待機します。
構文
プロシージャー・パラメーター
- name
- アラートの名前を指定する、タイプ VARCHAR (128) の入力引数。
- message
- SIGNAL プロシージャーによって送信されるメッセージを含む、タイプ VARCHAR (32672) の出力引数。
- status
- プロシージャーによって戻される状況コードを含むタイプ INTEGER の出力引数。 可能性があるのは以下の値です。
- 0
- アラートが発生しました。
- 1
- タイムアウトが発生しました。
- timeout
- 指定されたアラートを待機する時間を秒単位で指定する、タイプ INTEGER の入力引数。
許可
DBMS_ALERT モジュールに対する EXECUTE 特権。
例
waitone.clp という名前の CLP スクリプトを実行して、alert_test という名前のアラートを受信します。
waitone.clp:
SET SERVEROUTPUT ON@
CREATE PROCEDURE proc1()
BEGIN
DECLARE v_name VARCHAR(30) DEFAULT 'alert_test';
DECLARE v_msg VARCHAR(80);
DECLARE v_status INTEGER;
DECLARE v_timeout INTEGER DEFAULT 20;
CALL DBMS_ALERT.REGISTER(v_name);
CALL DBMS_OUTPUT.PUT_LINE('Waiting for signal...');
CALL DBMS_ALERT.WAITONE(v_name , v_msg , v_status , v_timeout);
CALL DBMS_OUTPUT.PUT_LINE('Alert name : ' || v_name);
CALL DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg);
CALL DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status);
CALL DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds');
CALL DBMS_ALERT.REMOVE(v_name);
END@
CALL proc1@異なる接続から、signalalert.clp という名前の スクリプトを実行して、alert_test という名前のアラートについてシグナルを発行します。
signalalert.clp:
SET SERVEROUTPUT ON@
CREATE PROCEDURE proc2
BEGIN
DECLARE v_name VARCHAR(30) DEFAULT 'alert_test';
CALL DBMS_ALERT.SIGNAL(v_name,'This is the message from ' || v_name);
CALL DBMS_OUTPUT.PUT_LINE('Issued alert for ' || v_name);
END@
CALL proc2@スクリプト signalalert.clp では、以下の出力が結果として戻ります。
Issued alert for alert_test
スクリプト waitone.clp では、以下の出力が結果として戻ります。
Waiting for signal...
Alert name : alert_test
Alert msg : This is the message from alert_test
Alert status : 0
Alert timeout: 20 seconds
