我有一个小的循环过程,正在等待另一个进程将一个标志写到表中。有什么办法可以增加一个延迟,使这个进程不至于消耗这么多的cpu?我相信如果所有的事情都正确结束,它可能需要运行1-2分钟。
BEGIN
DECLARE STOPPED_TOMCAT VARCHAR (1);
UPDATE MRC_MAIN.DAYEND SET DENDSTR = 'Y';
SET STOPPED_TOMCAT = (SELECT TOMCSTP FROM MRC_MAIN.DAYEND);
WHILE ( STOPPED_TOMCAT <> 'Y')
DO
SET STOPPED_TOMCAT = (SELECT TOMCSTP FROM MRC_MAIN.DAYEND);
END WHILE;
END;
使用 call dbms_alert.sleep(x)
,其中x--秒数。
我没有资源来测试这个解决方案,但为什么不试试在你的代码中调用IBM i命令DLYJOB。
CALL QCMDEXC('DLYJOB DLY(1)', 13);
参数DLY表示等待时间(秒),而数字13是正在执行的命令字符串的长度。