Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
创建名为 ml_qa_listener_queue(其中 queue 是消息队列名)的存储过程以异步接收消息。
此存储过程与所有其它 QAnywhere 存储过程的不同之处在于此过程并非事先提供。如果您创建一个名为 ml_qa_listener_queue 的存储过程(其中 queue 是消息队列),QAnywhere 随后即会使用它。
尽管可在连接上同步接收各消息,但异步接收消息通常更方便。可创建一个在有消息在特定地址上排队等候时便被调用的存储过程。此过程的名称必须为 ml_qa_listener_queue,其中 queue 是消息队列。如果已有此过程,则只要有消息在给定地址上排队,便会调用此过程。
此过程从另一个不同的连接调用。只要执行此过程时不出现 SQL 错误,就会自动确认和提交消息。
在此过程中不要执行提交或回退。
队列名是 QAnywhere 地址的一部分。有关详细信息,请参见QAnywhere 消息地址。
下面的示例创建一个过程,只要有消息在名为 executesql 的地址上排队,便会调用此过程。在本示例中,此过程假设消息内容是可对当前数据库执行的 SQL 语句。
CREATE PROCEDURE ml_qa_listener_executesql(IN @msgid VARCHAR(128)) begin DECLARE @execstr LONG VARCHAR; SET @execstr = ml_qa_gettextcontent( @msgid ); EXECUTE IMMEDIATE @execstr; end