(调用 CURRENT_ datetime 函数时,返回的值与返回到同一节点中另一个调用的值相同。这将确保您可以在单个节点内统一使用该函数。)
CALL CopyMessageHeaders(); Declare PutTime INTERVAL; SET PutTime = (CURRENT_GMTTIME - InputRoot.MQMD.PutTime) MINUTE TO SECOND; SET OutputRoot.XML.Test.PutTime = PutTime;
输出消息具有以下格式(尽管实际值有所不同):
<Test> <PutTime>INTERVAL '1:21.862' MINUTE TO SECOND</PutTime> </Test>
以下代码段设置了一个计时器,将在开始处理后经过指定的时间间隔触发该计时器,以检查处理是否已完成。例如,如果在该耗用时间后处理尚未完成,则引发计时器可能会触发某些恢复处理。
超时请求消息的 StartTime 字段被设置为当前时间加上所允许的延时,该延时由流中用户定义的属性定义。(管理员已经将用户定义的属性设置为“HH:MM:SS”格式的字符串。)
DECLARE StartDelyIntervalStr EXTERNAL CHARACTER '01:15:05'; CREATE PROCEDURE ValidateTimeoutRequest() BEGIN -- Set the timeout period DECLARE timeoutStartTimeRef REFERENCE TO OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime; IF LASTMOVE(timeoutStartTimeRef) THEN -- Already set ELSE -- Set it from the UDP StartDelyIntervalStr DECLARE startAtTime TIME CURRENT_TIME + CAST(StartDelyIntervalStr AS INTERVAL HOUR TO SECOND); -- Convert "TIME 'hh.mm.ss.fff'" to hh.mm.ss format -- needed in StartTime field DECLARE startAtTimeStr CHAR; SET startAtTimeStr = startAtTime; SET startAtTimeStr = SUBSTRING(startAtTimeStr FROM 7 FOR 8); SET OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime = startAtTimeStr; END IF; END;