DROP PROCEDURE IF EXISTS `clear_event_demo_pro`; DELIMITER ;; CREATE PROCEDURE `clear_event_demo_pro`( IN compare_date datetime, -- 要刪除的日期 IN delete_limit int -- 每次刪除的條數 ) COMMENT '根據時間來刪除event_demo' BEGIN SET @max_loop = 70; -- 最多循環50次 SET @loop_times = 1; -- 當前循環次數 -- 要刪除記錄的時間 -- SET @compareDate = DATE_ADD(NOW(), INTERVAL - 2 MONTH); SET @recCount = 0; -- 當前記錄數 SELECT COUNT(*) INTO @recCount FROM event_demo WHERE `time` < compare_date; -- 循環的刪除記錄 WHILE ( @loop_times < @max_loop AND @recCount>0 ) DO set @loop_times =@loop_times+1; DELETE FROM event_demo WHERE `time` < compare_date LIMIT delete_limit; SET @recCount=@recCount-delete_limit; commit; END WHILE; END ;; DELIMITER ;