当前位置:Gxlcms > 数据库问题 > mysql动态执行sql批量删除数据

mysql动态执行sql批量删除数据

时间:2021-07-01 10:21:17 帮助过:4人阅读

PROCEDURE `sp_delete_pushmsg_data`() BEGIN declare l_delete_date varchar(16); declare l_state_date varchar(16); declare l_dutyno int; declare l_row_cnt int DEFAULT 0; declare rn int default 0; declare i int default 0; set l_dutyno=101; set l_delete_date=date_format(DATE_ADD(now(),INTERVAL -30 day),%Y-%m-%d); /*删除90天之前的*/ set l_state_date=date_format(now(),%Y%m%d); set i=0; /* set @strsql01 = CONCAT(‘delete from db_pushmsg.app_message_‘,i,‘ where create_time <= ‘‘2018-06-24 00:00:00‘‘ and message_type not in (1,2,3,4,5,6,7,8,9, 4096, 4097, 4098, 24576, 24577,24578, 28672, 28673, 36865, 4353, 4354) limit 1000‘); select @strsql01; */ while i<=10 DO insert into tb_stat_duty_log(dutydate,dutyno,status,remark) values(l_state_date,l_dutyno,0,concat(开始清理,i)); label: WHILE (1 = 1) DO set @strsql01 = CONCAT(delete from db_test.tb_test,i, where create_time <= ‘‘2018-06-24 00:00:00‘‘ and message_type not in (1,2,3,4,5,6,7,8,9, 4096, 4097, 4098, 24576, 24577,24578, 28672, 28673, 36865, 4353, 4354) limit 1000); /*select @strsql01;*/ PREPARE stmt01 FROM @strsql01; execute stmt01; SET @aa = ROW_COUNT(); select @aa; IF @aa = 0 THEN LEAVE label; END IF; deallocate prepare stmt01; END WHILE; deallocate prepare stmt01; set i = i +1; insert into tb_stat_duty_log(dutydate,dutyno,status,remark) values(l_state_date,l_dutyno,0,concat(结束清理,i)); end while; END

 

mysql动态执行sql批量删除数据

标签:nbsp   limit   message   mys   proc   开始   count()   date   arch   

人气教程排行