MySQL过程未在commit语句上提交

问题描述

这是我的代码:

BEGIN
DECLARE _cnt INT;
DECLARE i INT DEFAULT 0;
DECLARE j INT DEFAULT 0;
DECLARE _FIPSAPNCombo VARCHAR(30)默认'00000';
DECLARE _prv_FIPSAPNCombo VARCHAR(30)默认'00000';
声明_Rollyear INT DEFAULT 2000;
DECLARE _first_Rollyear INT DEFAULT 2000;
DECLARE eof布尔默认FALSE;
十进制_AvTotal INT;
DECLARE _prv_AvTotal INT默认值0;
DECLARE _YOY_PCT INT;
DECLARE _YOY_USD INT;
DECLARE _in_pct INT;
DECLARE _in_usd INT;
十进制_last INT;
DECLARE _id INT;
十进制_idx INT;
十进制_prv_id INT;

DECLARE get_FIPSAPNCombo光标
FOR
SELECT 0,'0',2000,1 联盟 SELECT ID,FIPSAPNCombo,rollyear,AvTotal
从AvHistory_06037 AS h
WHERE substr(h.FIPSAPNCombo,1,8)= _in_FIPSAPNCombo_8
AND h.AvTotal> 0
按2、3订购
;

DECLARE继续处理程序 找不到 SET eof = TRUE;

SELECT YOY_PCT,YOY_USD INTO _in_pct,_in_usd FROM AlertSearches WHERE id = _in_AlertSearchesID;
开始交易;
OPEN get_FIPSAPNCombo;
doit:LOOP
获取get_FIPSAPNCombo INTO _id,_FIPSAPNCombo,_Rollyear,_AvTotal;
SET _YOY_USD = _AvTotal-_prv_AvTotal;
SET _YOY_PCT = ROUND((((((_ AvTotal-_prv_AvTotal)/ _prv_AvTotal)* 100),0);
如果eof = TRUE THEN
离开doit;
END IF;
如果_FIPSAPNCombo!= _prv_FIPSAPNCombo然后设置_first_Rollyear = _Rollyear;其他设置_first_Rollyear ='2000'; END IF;
如果_YOY_PCT> = _in_pct和_YOY_USD> = _in_usd和_Rollyear!= _first_Rollyear然后
开始
从AvHistoryAlerts删除,其中FIPSAPNCombo = _FIPSAPNCombo AND AlertSearchesID = _in_AlertSearchesID;
插入到AvHistoryAlerts值(_id,_FIPSAPNCombo,'06037',_ Rollyear,_AvTotal,_YOY_PCT,_YOY_USD,_prv_id,_prv_AvTotal,_in_AlertSearchesID);
UPDATE AvHistory SET CausalTransfer = NULL WHERE FIPSAPNCombo = _FIPSAPNCombo;
UPDATE AvHistory SET CausalTransfer ='Green'WHERE id = _id;
SET i = i + 1;
如果mod(i,1000)= 0然后插入error_log VALUES(concat(_in_FIPSAPNCombo_8,'> calc_YOY_increase i =',i,',now()));承诺;开始交易; END IF;
END;
END IF;
SET _prv_FIPSAPNCombo = _FIPSAPNCombo;
SET _prv_AvTotal = _AvTotal;
SET _prv_id = _id;
SET eof = FALSE;
END LOOP;
COMMIT;
CLOSE get_FIPSAPNCombo;

END

我认为该过程将每处理1000条记录就提交一次,并且会实时反映在error_log表中。

但是,只有在过程完全完成之后,数据才可用,然后所有记录一次全部显示在error_log表中。

这本身不是问题:我担心的是,该过程似乎在该过程结束时长时间停留在“等待处理程序提交”上。

所以,我不确定这是怎么回事:它将所有内容存储在内存中还是临时表或文件中,如果需要清理,则需要很多时间吗?

我以为,提交将清除所有内容...但是直到整个过程结束,它似乎都没有提交

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...