软件开发wmb 7.0wmb

Esql中数据采集控制

CREATE COMPUTE MODULE BUSINESS_DC_FS_计算CREATE FUNCTION Main() RETURNS BOOLEANBEGINDECLARE s INTEGER 0;SET InputLocalEnvironment.Variables.temp[] = SELECT E.EVENT_ID,E.OBJECT_KEY,E.OBJECT_VERB FROM Database.DB2ADMIN.BUSINESS_DC_EVENTS AS E;CALL GetM...显示全部
CREATE COMPUTE MODULE BUSINESS_DC_FS_计算

CREATE FUNCTION Main() RETURNS BOOLEAN


BEGIN




DECLARE s INTEGER 0;


SET InputLocalEnvironment.Variables.temp[] = SELECT E.EVENT_ID,E.OBJECT_KEY,E.OBJECT_VERB FROM Database.DB2ADMIN.BUSINESS_DC_EVENTS AS E;


CALL GetMessage();


RETURN TRUE;


END;


CREATE PROCEDURE GetMessage() BEGIN


DECLARE I INTEGER 1;


DECLARE J INTEGER;


SET J = CARDINALITY(InputLocalEnvironment.Variables.temp[]);


WHILE I < J+1 DO


SET OutputRoot.XMLNSC.Data.BUSINESS_DC[I] = THE(SELECT * FROM Database.DB2ADMIN.BUSINESS_DC AS H where H.DCDM = InputLocalEnvironment.Variables.temp[I].OBJECT_KEY);


SET OutputRoot.XMLNSC.Data.BUSINESS_DC[I].OBJECT_VERB = InputLocalEnvironment.Variables.temp[I].OBJECT_VERB;


DELETE FROM Database.DB2ADMIN.BUSINESS_DC_EVENTS AS E WHERE E.EVENT_ID = InputLocalEnvironment.Variables.temp[I].EVENT_ID;


SET I = I + 1;


END WHILE;


END;


CREATE PROCEDURE CopyEntireMessage() BEGIN


SET OutputRoot = InputRoot;


END;

END MODULE;
这是WMB中发送方的ESQL的一段代码,通过获取时间表中的信息把表中数据交换到接收方,但是由于这段代码没有控制读取时间表中数据量,如果一次性增加或修改的数据过大,造成MQ队列数据堵塞。
我原本的想法是通过在这个SQL上SELECT E.EVENT_ID,E.OBJECT_KEY,E.OBJECT_VERB FROM Database.DB2ADMIN.BUSINESS_DC_EVENTS AS E添加TOP 或者ROWNUM来控制获取事件表中的条数(数据量),但是ESQL中好像不能使用(我用各个数据库的SQL试用都不行),求教大神有什么方法控制我从事件表中读取的数据条数。收起
参与13

查看其它 10 个回答xuanshikeji的回答

xuanshikejixuanshikeji硬件开发工程师唐山轩氏科技有限公司

打印机数据采集方案是否满足您的要求 qq:123668767

硬件生产 · 2017-09-13
浏览1963

回答者

xuanshikeji
硬件开发工程师唐山轩氏科技有限公司

xuanshikeji 最近回答过的问题

回答状态

  • 发布时间:2017-09-13
  • 关注会员:2 人
  • 回答浏览:1963
  • X社区推广