mysql 存储过程 调度_MySQL存储过程不会从事件调度器触发

有人可以告诉我这个sp有什么问题吗?逻辑似乎是好的,但是当我检查我的表时,它根本不起作用。

DELIMITER //

DROP PROCEDURE IF EXISTS add_zero_yearly_sales_proc //

CREATE PROCEDURE add_zero_yearly_sales_proc()

READS SQL DATA

BEGIN

DECLARE num_of_sales INT DEFAULT 0;

DECLARE last_ins_date DATETIME;

DECLARE done INT DEFAULT 0;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

SET last_ins_date = DATE_SUB(NOW(), INTERVAL 2 YEAR);

ins_loop: WHILE last_ins_date < NOW() DO

SELECT COUNT(sales_amount_sold) INTO num_of_sales

FROM yearly_sales

WHERE sales_date_sold BETWEEN DATE_FORMAT(last_ins_date,'%Y-%m-01 00:00:01') AND DATE_FORMAT(LAST_DAY(last_ins_date),'%Y-%m-%d 23:59:59');

IF num_of_sales = 0 THEN

INSERT INTO yearly_sales(sales_date_sold, sales_amount_sold,sales_quantity)

VALUES (CONCAT(DATE_FORMAT(last_ins_date,'%Y-%m-01 00:00:01')),0, 0);

END IF ;

SET num_of_sales = 0;

SET last_ins_date = DATE_ADD(last_ins_date, INTERVAL 1 MONTH);

END WHILE ins_loop;

SET done = 0;

END ;//

DELIMITER ;我创建了一个每小时都会触发此事件的事件。该程序应该检查在monthly_sales表中是否有几个月没有任何销售价值,如果是这样的话,为金额&数量以及该日期的月初。我已经检查过,但它似乎没有工作。

这里是我创建的每小时调用一次的事件

DELIMITER //

CREATE

EVENT `hourly_sales_evt`

ON SCHEDULE EVERY 1 HOUR STARTS DATE_FORMAT(NOW(),'%Y-%m-%d %H:55:00')

ON COMPLETION PRESERVE

DO BEGIN

CALL add_zero_yearly_sales_proc();

END //

DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值