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试用都不行),求教大神有什么方法控制我从事件表中读取的数据条数。收起