1.事件
2.函数
3.存储过程。
mysql 生成定时事件任务,调用存储过程,存储过程中执行要操作的函数,则定时任务算是完成。
自己写的一个规范的存储过程 ,
DELIMITER $$
USE `jdautoshop`$$
DROP PROCEDURE IF EXISTS `P_EAP_SHOP_GOODS`$$
CREATE DEFINER=`root`@`%` PROCEDURE `P_EAP_SHOP_GOODS`()
BEGIN
DECLARE P_GOODS_ID VARCHAR(36);
DECLARE P_ENDDATE VARCHAR(20);
DECLARE s INT DEFAULT 0;
DECLARE shop_list CURSOR FOR SELECT GOODS_ID,ENDDATE FROM `jdautoshop`.`shop_goods`; # 定义游标,将查询的数据放入shop_list中
DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1; # 用作循环的标记
OPEN shop_list; # 打开游标
FETCH shop_list INTO P_GOODS_ID,P_ENDDATE; #将游标中的数据放入变量中
WHILE s <> 1 DO
SELECT `F_EAP_WF_SHOP_GOODS01`(P_ENDDATE,P_GOODS_ID); #调用函数(里面是操作sql方式)
FETCH shop_list INTO P_GOODS_ID,P_ENDDATE;
END WHILE;
CLOSE shop_list; #关闭游标
END$$
DELIMITER ;
CALL P_EAP_SHOP_GOODS(); # 执行存储过程
手动执行存储过程是可以的,但是事件的定时任务没起到做用,所以事件没起到定时作用,具体原因还未找到???