RECEIVE_MESSAGE 函数 - 从指定管道获取消息
RECEIVE_MESSAGE 函数从指定管道获取消息。
语法
返回值
RECEIVE_MESSAGE
函数返回类型为 INTEGER 的下列状态码之一。
| 状态码 | 描述 |
|---|---|
| 0 | 成功 |
| 1 | 超时 |
函数参数
- pipename
- 类型为 VARCHAR(128) 的输入参数,用于指定管道的名称。 如果指定的管道不存在,那么会隐式创建该管道。 有关管道的更多信息,请参阅 DBMS_PIPE 模块。
- 超时
- 类型为 INTEGER 的可选输入参数,用于指定等待时间(以秒计)。 缺省值为 86400000 秒(1000 天)。
权限
对 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