PURGE¶
PURGE
プロシージャは、指定された暗黙のパイプから未受信のメッセージを削除します。
PURGE(<pipename> VARCHAR2)
REMOVE_PIPE
関数を使用して、明示的なパイプを削除します。
Parameters
pipename
パイプの名前。
Examples
2つのメッセージがパイプで送信されます。
DECLARE
v_status INTEGER;
BEGIN
DBMS_PIPE.PACK_MESSAGE('Message #1');
v_status := DBMS_PIPE.SEND_MESSAGE('pipe');
DBMS_OUTPUT.PUT_LINE('SEND_MESSAGE status: ' || v_status);
DBMS_PIPE.PACK_MESSAGE('Message #2');
v_status := DBMS_PIPE.SEND_MESSAGE('pipe');
DBMS_OUTPUT.PUT_LINE('SEND_MESSAGE status: ' || v_status);
END;
SEND_MESSAGE status: 0
SEND_MESSAGE status: 0
最初のメッセージを受信して解凍します。
DECLARE
v_item VARCHAR2(80);
v_status INTEGER;
BEGIN
v_status := DBMS_PIPE.RECEIVE_MESSAGE('pipe',1);
DBMS_OUTPUT.PUT_LINE('RECEIVE_MESSAGE status: ' || v_status);
DBMS_PIPE.UNPACK_MESSAGE(v_item);
DBMS_OUTPUT.PUT_LINE('Item: ' || v_item);
END;
RECEIVE_MESSAGE status: 0
Item: Message #1
パイプをパージします。
EXEC DBMS_PIPE.PURGE('pipe');
次のメッセージを取得してください。 RECEIVE_MESSAGE
呼び出しは、ステータスコード1を返し、メッセージが利用できなかったためタイムアウトしたことを示します。
DECLARE
v_item VARCHAR2(80);
v_status INTEGER;
BEGIN
v_status := DBMS_PIPE.RECEIVE_MESSAGE('pipe',1);
DBMS_OUTPUT.PUT_LINE('RECEIVE_MESSAGE status: ' || v_status);
END;
RECEIVE_MESSAGE status: 1