有人可以告訴我這個sp有什麼問題。邏輯似乎是好的,但是當我檢查我的表時,它根本不起作用。mysql存儲過程沒有從事件調度器中觸發
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表中有幾個月沒有任何銷售值,如果是,則爲數量&數量添加0值,併爲該日期添加月份的開始日期。我已經檢查過,但它似乎沒有工作。
而且,這裏是我創建調用它每小時
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 ;
的代碼應該直到它到達當月 – goonerify
您是否嘗試過手動調用過程每個月回去2年搜索?它做它應該做什麼?也就是說,您是否遇到了事件調度程序或程序本身的問題? – eggyal
哦,我的!它在我手動調用它時起作用。看來這是不是拍攝的事件。謝謝 – goonerify