|>>-MQPUBLISH--(-------------------------------------------------> | |>--+---------------------------------------------+--msg-data----> | '-publisher-service--,--+-------------------+-' | '-service-policy--,-' | |>--+---------------------------------+--)---------------------->< | '-,--topic--+-------------------+-' | | (1) | | '-,--correl-id------' | |
|注:
|模式为 DB2MQ。
|MQPUBLISH 函数将数据发布给 MQSeries。此函数要求安装“MQSeries 发布/预订”或“MQSeries 集成器”。请参考 www.ibm.com/software/MQSeries |以获取更详细的信息。
|MQPUBLISH 函数将 msg-data 中包含的数据发布给在 |publisher-service 中指定的 MQSeries 发布方,并使用由 |service-policy 定义的服务质量策略。可以指定消息的可选主题,还可以指定可选的用户定义消息相关标识符。如果成功的话,该函数将返回值 '1',如果失败,则返回 '0'。 |
|示例
|示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 123”发布至缺省发布方服务(DB2.DEFAULT.PUBLISHER)。没有为消息指定相关标识符或主题。
|VALUES MQPUBLISH('Testing 123')
|示例 2:此示例将字符串“Testing 345”发布至主题“TESTS”下的发布方服务“MYPUBLISHER”。使用了缺省策略,但是未指定相关标识符。
|VALUES MQPUBLISH('MYPUBLISHER','Testing 345', 'TESTS')
|示例 3:此示例使用具有相关标识符“TEST1”的策略“MYPOLICY”来将字符串“Testing 678”发布至发布方服务“MYPUBLISHER”。消息是使用主题“TESTS”来发布的。
|VALUES MQPUBLISH('MYPUBLISHER','MYPOLICY','Testing 678','TESTS','TEST1')
|示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 901”发布主题“TESTS”下的发布方服务“MYPUBLISHER”,且没有任何相关标识符。
|VALUES MQPUBLISH('Testing 901','TESTS')
|如果成功的话,所有示例都将返回值 '1'。
|>>-MQREADCLOB--(--+----------------------------------------+----> | '-receive-service--+-------------------+-' | '-,--service-policy-' | |>--)----------------------------------------------------------->< | |
|模式为 DB2MQ。
|MQREADCLOB 函数通过使用在 service-policy |中定义的服务质量策略来从由 receive-service |指定的 MQSeries 位置返回消息。执行此操作不会从与 receive-service 相关联的队列中除去消息,而是在队列开头返回消息。返回值是最大长度为 |1MB 的 CLOB(包含该消息)。如果没有要返回的消息,则将返回 NULL。 |
|示例:
|示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来读取缺省服务(DB2.DEFAULT.SERVICE)指定的队列开头的消息。
|VALUES MQREADCLOB()
|示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来读取服务“MYSERVICE”指定的队列开头的消息。
|VALUES MQREADCLOB('MYSERVICE')
|示例 3:此示例使用策略“MYPOLICY”来读取服务“MYSERVICE”指定的队列开头的消息。
|VALUES MQREADCLOB('MYSERVICE','MYPOLICY')
|如果成功的话,所有这些示例都会将消息的内容作为最大大小为 1MB 的 CLOB |返回。如果没有任何消息,则将返回 NULL。
|>>-MQRECEIVECLOB------------------------------------------------> | |>--(--+----------------------------------------------------------+--)->< | '-receive-service--+-------------------------------------+-' | '-,--service-policy--+--------------+-' | '-,--correl-id-' | |
|模式为 DB2MQ。
|MQRECEIVECLOB 函数通过使用服务质量策略 service-policy 来从由 receive-service 指定的 MQSeries 位置处返回消息。执行此操作时将从与 receive-service 相关联的队列中除去消息。如果指定了 correl-id,则将返回具有匹配的相关标识符的第一条消息。如果未指定 correl-id,则将返回队列开头的消息。返回值是包含该消息的最大长度为 1MB |的 CLOB。如果没有要返回的消息,则将返回 NULL。 |
|示例:
|示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列开头的消息。
|VALUES MQRECEIVECLOB()
|示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收服务“MYSERVICE”指定的队列开头的消息。
|VALUES MQRECEIVECLOB('MYSERVICE')
|示例 3:此示例使用策略“MYPOLICY”来接收服务“MYSERVICE”指定的队列开头的消息。
|VALUES MQRECEIVECLOB('MYSERVICE','MYPOLICY')
|示例 4:此示例使用策略“MYPOLICY”来从服务“MYSERVICE”指定的队列开头接收相关标识与 '1234' 相匹配的第一条消息。
|VALUES MQRECEIVECLOB('MYSERVICE',MYPOLICY','1234')
|如果成功的话,所有这些示例都会将消息的内容作为最大大小为 1MB 的 CLOB 返回。如果没有任何消息,则将返回 NULL。
|>>-MQSEND--(--+----------------------------------------+--------> | '-send-service--,--+-------------------+-' | '-service-policy--,-' | |>--msg-data--+-------------------+--)-------------------------->< | | (1) | | '-,--correl-id------' | |
|注:
|模式为 DB2MQ。
|MQSEND 函数使用 service-policy 定义的服务质量策略来将 msg-data 中包含的数据发送至 |send-service 指定的 MQSeries 位置。可用 correl-id 来指定可选的用户定义消息相关标识符。如果成功的话,该函数将返回值 '1',如果失败,则返回 '0'。 |
|示例:
|示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 123”发送至缺省服务(DB2.DEFAULT.SERVICE),且不带相关标识符。
|VALUES MQSEND('Testing 123')
|示例 2:此示例使用策略“MYPOLICY”来将字符串“Testing 345”发送至服务“MYSERVICE”,且不带相关标识符。
|VALUES MQSEND('MYSERVICE','MYPOLICY','Testing 345')
|示例 3:此示例使用策略“MYPOLICY”来将字符串“Testing 678”发送至服务“MYSERVICE”,且带有相关标识符“TEST3”。
|VALUES MQSEND('MYSERVICE','MYPOLICY','Testing 678','TEST3')
|示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 901”发送至服务“MYSERVICE”,且不带相关标识符。
|VALUES MQSEND('MYSERVICE','Testing 901')
|如果成功的话,所有示例都将返回标量值 '1'。
|>>-MQREADALLCLOB--(---------------------------------------------> | |>--+----------------------------------------+--+----------+-----> | '-receive-service--+-------------------+-' '-num-rows-' | '-,--service-policy-' | |>--)----------------------------------------------------------->< | |
|模式为 DB2MQ。
|MQREADALLCLOB 函数通过使用服务质量策略 service-policy |从 receive-service 指定的 MQSeries 位置返回包含消息和消息元数据的表。执行此操作不会从与 receive-service 相关联的队列中除去消息。
|如果指定了 num-rows,则将返回最多为 num-rows 的消息。如果未指定 num-rows,则将返回所有可用的消息。返回的表包含下列各列:
|示例:
|示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列中的所有消息。消息和所有元数据都是作为表返回的。
|SELECT * | FROM table (MQREADALLCLOB()) T
|示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收服务 MYSERVICE 指定的队列开头的所有消息。只返回 MSG 和 CORRELID 列。
|SELECT T.MSG, T.CORRELID | FROM table (MQREADALLCLOB('MYSERVICE')) T
|示例 3:此示例使用缺省策略(DB2.DEFAULT.POLICY)来读取缺省服务(DB2.DEFAULT.SERVICE)指定的队列开头。只返回 CORRELID 为 '1234' 的消息。将返回所有列。
|SELECT * | FROM table (MQREADALLCLOB()) T | WHERE T.CORRELID = '1234'
|示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列的前 10 条消息。将返回所有列。
|SELECT * | FROM table (MQREADALLCLOB(10)) T
|>>-MQRECEIVEALLCLOB--(------------------------------------------> | |>--+----------------------------------------------------------+--> | '-receive-service--+-------------------------------------+-' | '-,--service-policy--+--------------+-' | '-,--correl-id-' | |>--+-----------------+--)-------------------------------------->< | '-+---+--num-rows-' | '-,-' | |
|模式为 DB2MQ。
|MQRECEIVEALLCLOB 函数通过使用服务质量策略 service-policy |从 receive-service 指定的 MQSeries 位置返回包含消息和消息元数据的表。执行此操作时将从与 receive-service 相关联的队列中除去消息。
|如果指定了 correl-id,则将只返回具有匹配的相关标识符的那些消息。如果未指定 correl-id,则将返回队列开头的消息。
|如果指定了 num-rows,则将返回最多为 num-rows 的消息。如果未指定 num-rows,则返回所有可用的消息。返回的表包含下列各列:
|示例:
|示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列中的所有消息。消息和所有元数据都是作为表返回的。
|SELECT * | FROM table (MQRECEIVEALLCLOB()) T
|示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收服务 MYSERVICE 指定的队列开头的所有消息。只返回 MSG 和 CORRELID 列。
|SELECT T.MSG, T.CORRELID | FROM table (MQRECEIVEALLCLOB('MYSERVICE')) T
|示例 3:此示例使用策略“MYPOLICY”来接收服务“MYSERVICE”指定的队列开头的所有消息。只返回 CORRELID 为 '1234' 的消息。只返回 MSG 和 CORRELID 列。
|SELECT T.MSG, T.CORRELID | FROM table (MQRECEIVEALLCLOB('MYSERVICE','MYPOLICY','1234')) T |
|示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列的前 10 条消息。将返回所有列。
|SELECT * | FROM table (MQRECEIVEALLCLOB(10)) T| |
|MQSeries 函数(在 DB2MQ 模式中定义的那些函数)现在允许与 VARCHAR 数据和 CLOB 数据配合使用。在某些情况下,现在存在新函数处理 CLOB 数据类型,换句话说,已经存在的函数现在同时处理 CLOB 和 VARCHAR |数据。在任何一种情况下,CLOB 函数的语法与它的 VARCHAR 等价物的语法完全相同。下表中列示了支持使用 |CLOB 数据的函数以及其等价 VARCHAR 函数:
|
|表 16. 支持 CLOB 数据类型的 MQSeries 函数
用于 VARCHAR 数据的函数 | 用于 CLOB 数据的函数 |
---|---|
MQPUBLISH | MQPUBLISH |
MQREAD | MQREADCLOB |
MQRECEIVE | MQRECEIVECLOB |
MQSEND | MQSEND |
MQREADALL | MQREADALLCLOB |
MQRECEIVEALL | MQRECEIVEALLCLOB |
|有关启用 MQSeries 函数(在 DB2MQ 模式中定义的那些函数)的信息,参见 MQSeries。