MQREADALL 表函数 (table function)
MQREADALL函数返回一个包含指定 IBM® MQ 位置的消息和消息元数据的表,而不会从队列中删除消息。
该方案的电子邮件是 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 或表达式的值为零,则返回所有可用消息。
函数计算结果为下表所示格式的表格。 所有列都是空值。
| 列名 | 数据类型 | 包含 |
|---|---|---|
| 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指定的队列首的所有消息。
仅返回MSG和CORRELID列。SELECT T.MSG, T.CORRELID FROM TABLE (MQREADALL (’MYSERVICE’)) AS T; - 示例 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条消息。
前10条消息和所有栏目以表格形式返回。SELECT * FROM TABLE (MQREADALL(10)) AS T;
