MQRead() 函数

MQRead() 函数会从 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 个字节。如果不指定,将不向消息添加任何相关标识。

用途

MQRead() 函数会从 service_name 指定的 WMQ 队列返回消息(使用 policy_name 中定义的服务质量策略)。此函数不会从与 service_name 关联的队列除去消息。如果指定了 correl_id,将返回具有匹配的相关标识的第一条消息。如果不指定 correl_id,将返回队列的第一条消息。函数的结果是类型为 LVARCHAR 的字符串。如果未返回任何消息,此函数将返回 NULL。此函数仅读取已落实的消息。

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

arg2 = policy_name

MQRead(arg1, arg2, arg3) arg1 = service_name

arg2 = policy_name

arg3 = correl_id

返回码

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

示例

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