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(); # 执行存储过程

 手动执行存储过程是可以的,但是事件的定时任务没起到做用,所以事件没起到定时作用,具体原因还未找到???