MQReceive() 函数

MQReceive() 函数会从 WMQ 队列返回消息,并且从队列除去该消息。

语法

service_name
可选参数。引用 "gbasedbt".mqiservice 表的 servicename 列中的值。如果不指定 service_name,将把 IDS.DEFAULT.SERVICE 用作服务。service_name 的最大大小为 48 个字节。
policy_name
可选参数。引用 "gbasedbt".mqipolicy 表的 policyname 列中的值。如果不指定 policy_name,将把 IDS.DEFAULT.POLICY 用作策略。policy_name 的最大大小为 48 个字节。
correl_id
可选参数。一个字符串,其中包含要与此消息关联的相关标识。通常在请求与回复场景中指定 correl_id,以便将请求与回复关联。correl_id 的最大大小为 24 个字节。如果不指定,将不向消息添加任何相关标识。

用途

MQReceive() 函数会从 service_name 指定的 WMQ 位置返回消息(使用服务质量策略 policy_name)。此函数会从与 service_name 关联的队列除去消息。如果指定了 correl_id,将返回具有匹配的相关标识的第一条消息。如果不指定 correl_id,将返回队列的第一条消息。函数的结果是 LVARCHAR 类型的字符串。如果无可返回的消息,此函数将返回 NULL。

下表描述 MQReceive() 函数自变量的解释方式。
表 1. MQReceive() 自变量解释
用途 自变量解释
MQReceive() 无自变量
MQReceive(arg1) arg1 = service_name
MQReceive(arg1, arg2) arg1 = service_name

arg2 = policy_name

MQReceive(arg1, arg2, arg3) arg1 = service_name

arg2 = policy_name

arg3 = correl_id

返回码

类型为 LVARCHAR 的字符串
操作成功。
NULL
无可用消息。
错误
操作失败。

示例

示例 1
begin;
EXECUTE FUNCTION MQReceive();
commit;
此外,也可以使用以下语法:
insert into my_order_table VALUES(MQReceive());
此示例使用以下参数接收队列的第一条消息:
  • service_name:缺省服务名称
  • policy_name:缺省策略名称
  • correl_id:无
示例 2
begin;
EXECUTE FUNCTION MQReceive('MYSERVICE');
rollback;
此外,也可以使用以下语法:
insert into my_order_table VALUES(MQReceive('MYSERVICE'));
此示例使用以下参数接收队列的第一条消息:
  • service_name:“MYSERVICE”
  • policy_name:缺省策略名称
  • correl_id:无
示例 3
begin;
EXECUTE FUNCTION MQReceive('MYSERVICE','MYPOLICY');
commit;
此外,也可以使用以下语法:
insert into my_order_table VALUES(MQReceive('MYSERVICE', 'MYPOLICY'));
此示例使用以下参数接收队列的第一条消息:
  • service_name:“MYSERVICE”
  • policy_name:“MYPOLICY”
  • correl_id:无
示例 4
begin;
EXECUTE FUNCTION MQReceive('MYSERVICE','MYPOLICY','1234');
commit;
此外,也可以使用以下语法:
insert into my_order_table VALUES(MQReceive('MYSERVICE', 'MYPOLICY', '1234'));
此示例使用以下参数接收队列的第一条消息:
  • service_name:“MYSERVICE”
  • policy_name:“MYPOLICY”
  • correl_id:“1234”