RECEIVE_MESSAGE 函数从指定管道获取消息。
状态码 | 描述 |
---|---|
0 | 成功 |
1 | 超时 |
对 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