mySql存储过程定时实现循环查询效果更新到新表中
- -- 查询统计数据select * from cold_chain_report ;-- 查看定时策略是否开启show variables like '%event_sche%';-- 开启定时任务策略SET GLOBAL event_scheduler = ON;-- 删除存储过程DROP PROCEDURE plush_report_data;-- 创建存储过程USE fad_20201206;delimiter //create procedure plush_report_data ()BEGIN-- 界说变量DECLARE s int DEFAULT 0;DECLARE org_Id1 varchar(255);-- 界说游标,并将sql效果集赋值到游标中DECLARE report CURSOR FOR SELECT ID FROM sysorganization_base WHERE isdel=0 AND JB4;-- 声明当游标遍历完后将标记变量置成某个值DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;-- 打开游标open report;-- 将游标中的值赋值给变量,注意:变量名不要和返回的列名同名,变量顺序要和sql效果列的顺序一致fetch report into org_Id1;-- 当s不便是1,也就是未遍历完时,会一直循环while s1 do-- 执行业务逻辑 DELETE from cold_chain_report where ORGID = org_Id1; INSERT INTO cold_chain_report (`ORGID`) VALUES (org_Id1); UPDATE cold_chain_report set LRZPC = (SELECT COUNT(1) FROM e_storage_order_info a WHERE a.DZ_ID LIKE CONCAT(org_Id1,'%')) where ORGID = org_Id1;-- 将游标中的值再赋值给变量,供下次循环使用fetch report into org_Id1;-- 当s便是1时表明遍历以完成,退出循环end while;-- 关闭游标close report;ENDdelimiter ;-- 删除定时任务DROP EVENT plush_report_data_event;-- 创建定时任务 天天破晓1点执行create event plush_report_data_eventon schedule EVERY 1 DAY STARTS date_add(date( ADDDATE(curdate(),1)),interval 1 hour) on completion preserve disabledo call plush_report_data ();-- 查看定期任务SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS; -- 开启alter event plush_report_data_event on completion preserve enable;
复制代码 来源:https://blog.csdn.net/qq_38407462/article/details/112009019
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |