MQREADALL 表函数 (table function)

MQREADALL函数返回一个包含指定 IBM® MQ 位置的消息和消息元数据的表,而不会从队列中删除消息。

阅读语法图跳过可视化语法图MQREADALL(接受服务,服务政策,行数1)
注意:
  • 1 当指定函数的前置参数时, 在num-rows 之前需要使用逗号。

该方案的电子邮件是 DB2MQ。

MQREADALL函数返回一个包含来自 IBM MQ 消息和消息元数据的表,该地址由 receive-service 指定,并使用 service-policy中定义的服务质量策略。 执行此操作不会从与接收服务相关的队列中删除消息。

接受服务
返回值是内置字符串或图形字符串数据类型(非LOB)的表达式。 表达式的值不能为空字符串或带有尾部空格的字符串。 表达式实际长度不得超过48字节。 表达式值必须引用 DB2MQ.MQSERVICE 表格中定义的服务点。 服务点是一个发送或接收信息的合理终点。 服务点定义包括 IBM MQ 队列管理器的名称和队列的名称。 如需了解更多信息,请查看 IBM MQ 应用程序消息界面

如果未指定接收服务或接收服务为空值,则使用 DB2.DEFAULT.POLICY

服务政策
返回值是内置字符串或图形字符串数据类型(非LOB)的表达式。 表达式的值不能为空字符串或带有尾部空格的字符串。 表达式实际长度不得超过48字节。 表达的价值必须参考 DB2MQ.MQPOLICY 表格中定义的服务政策。 服务政策规定了适用于此消息操作的一系列服务质量选项。 这些选项包括信息优先级和信息持久性。 如需了解更多信息,请查看 IBM MQ 应用程序消息界面

如果服务策略未指定或为空值,则使用 DB2.DEFAULT.POLICY

行数
返回值为SMALLINT或INTEGER数据类型的表达式,其值为正整数或零。 表达式的值指定了返回消息的最大数量。

如果未指定 num-rows 或表达式的值为零,则返回所有可用消息。

函数计算结果为下表所示格式的表格。 所有列都是空值。
表 1. MQREADALL生成的表格格式
列名 数据类型 包含
MSG varchar(4000) IBM MQ 邮件的内容
CORRELID VARCHAR(24) 用于关联消息的相关ID
主题 VARCHAR(40) 发布消息时附带的主题(如有)
QNAME VARCHAR(48) 收到消息时所在的队列名称
MSGID CHAR(24) IBM MQ
MSGFORMAT VARCHAR(8) 消息的格式,由 IBM MQ

示例

示例 1
使用默认策略(Db2. DEFAULT.POLICY )读取默认服务(Db2. DEFAULT.SERVICE )指定的队列中的所有消息。
   SELECT * FROM TABLE (MQREADALL()) AS T;

消息和所有元数据以表格形式返回。

示例 2
使用默认策略(Db2. DEFAULT.POLICY )读取服务MYSERVICE指定的队列首的所有消息。
   SELECT T.MSG, T.CORRELID
		FROM TABLE (MQREADALL (’MYSERVICE’)) AS T;
仅返回MSG和CORRELID列。
示例 3
使用默认策略(Db2. DEFAULT.POLICY )读取默认服务(Db2. DEFAULT.SERVICE )指定的队列中的所有消息。 仅返回CORRELID为“1234”的消息。
   SELECT *
     FROM TABLE (MQREADALL(10)) AS T
		 WHERE T.CORRELID = ’1234’;
所有列都返回。
示例 4
使用默认策略(Db2. DEFAULT.POLICY ),从默认服务(Db2. DEFAULT.SERVICE )指定的队列开始检索前10条消息。
   SELECT *
     FROM TABLE (MQREADALL(10)) AS T;
前10条消息和所有栏目以表格形式返回。