SEND_MESSAGE プロシージャー - メッセージを指定されたパイプに送信する
SEND_MESSAGE プロシージャーは、メッセージをセッションのローカル・メッセージ・バッファー から、指定されたパイプに送信します。
構文
戻り値
このプロシージャーは、タイプ INTEGER の以下の状況コードの 1 つを戻します。
状況コード | 説明 |
---|---|
0 | 成功 |
1 | タイムアウト |
プロシージャー・パラメーター
- pipename
- パイプの名前を指定する、タイプ VARCHAR (128) の入力引数。 指定されたパイプが存在しない場合は、パイプが暗黙的に 作成されます。 パイプについて詳しくは、DBMS_PIPE モジュールを参照してください。
- timeout
- 待ち時間を秒単位で指定する、タイプ INTEGER のオプション入力引数。 デフォルトは 86400000 (1000 日) です。
- maxpipesize
- パイプの最大容量をバイト単位で指定する、タイプ INTEGER のオプション入力引数。 デフォルトは 8192 バイトです。
許可
DBMS_PIPE モジュールに対する EXECUTE 特権。
例
proc1 では、 メッセージを送信します。 proc2 では、メッセージを受信して解凍します。 メッセージが 1 秒以内に 受信されない場合は、タイムアウトになります。
SET SERVEROUTPUT ON@
CREATE PROCEDURE proc1()
BEGIN
DECLARE status INTEGER;
SET status = DBMS_PIPE.CREATE_PIPE( 'pipe1' );
SET status = DBMS_PIPE.PACK_MESSAGE('message1');
SET status = DBMS_PIPE.SEND_MESSAGE( 'pipe1' );
END@
CREATE PROCEDURE proc2()
BEGIN
DECLARE v_item VARCHAR(80);
DECLARE v_status INTEGER;
SET v_status = DBMS_PIPE.RECEIVE_MESSAGE('pipe1',1);
CALL DBMS_OUTPUT.PUT_LINE('RECEIVE_MESSAGE status: ' || v_status);
CALL DBMS_PIPE.UNPACK_MESSAGE(v_item);
CALL DBMS_OUTPUT.PUT_LINE('Item: ' || v_item);
END@
CALL proc1@
CALL proc2@
この例では、以下の出力が結果として戻ります。
RECEIVE_MESSAGE status: 0
Item: message1