gpt4 book ai didi

mysql - 在 MySQL 中,我无法在循环后执行命令

转载 作者:行者123 更新时间:2023-11-29 10:39:56 25 4
gpt4 key购买 nike

我正在使用游标和循环对表的每个项目执行存储过程。我需要每天完成一次。该过程运行并在表的每一行上执行日常过程。这部分工作正常。但是,当我尝试在最后添加一个日志记录(随着执行所花费的时间更新表 RollupControl)时,这个命令根本不会被执行......我添加了两个调试选择,一个在循环内,另一个在循环外。里面的被执行了,但外面的没有……

DROP procedure IF EXISTS `RunX`;
DELIMITER $$
CREATE PROCEDURE `RunX`()
RunX:BEGIN
-- Roda Rup366 uma vez para cada Dispositivo
DECLARE t0 DATETIME(2) DEFAULT NOW(2);
DECLARE t0i FLOAT DEFAULT 0;
DECLARE debug INT DEFAULT 1;

DECLARE viddisp varchar(6);
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE _id BIGINT UNSIGNED;

DECLARE cur CURSOR FOR (SELECT ID FROM TableM m JOIN TableR r on m.ID = r.ID
WHERE TIME_TO_SEC(TIMEDIFF(LastUpdatedTime,LastQueryedTime))/(60*60*24) > 1);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

OPEN cur;
RunXLoop: LOOP
FETCH cur INTO _id;
IF done THEN
LEAVE RunX;
END IF;
SET viddisp = (SELECT IDDisp FROM TableM WHERE ID = _id);
IF debug=1 THEN
SELECT viddisp;
END IF;
CALL RunOnceADayProc(viddisp);
END LOOP RunXLoop;
IF debug=1 THEN
SELECT t0i;
END IF;
SET t0i = (SELECT TIMESTAMPDIFF(MICROSECOND,t0,NOW(2))/1000000);
UPDATE RollupControl SET DH_Op = NOW(), ET = t0i WHERE ID = 366;
CLOSE cur;

END$$
DELIMITER ;

最佳答案

我在想

LEAVE RunX;

应该是

LEAVE RunXLoop;

关于mysql - 在 MySQL 中,我无法在循环后执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com