请选择 进入手机版 | 继续访问电脑版

mySql存储过程定时实现循环查询结果更新到新表中

[复制链接]
科达工艺 发表于 2021-1-1 18:32:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
mySql存储过程定时实现循环查询效果更新到新表中
  1. -- 查询统计数据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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )