MySQL存储过程,根据curdate()比较每一行的日期字段和更新

时间:2015-06-12 17:47:46

标签: php mysql stored-procedures

这可能是一个noob问题,但我尝试使用谷歌搜索这个问题,我没有找到任何解决方案(我认为)。无论如何,我需要将mysql表中的一行日期与当前日期进行比较,并根据结果更新行。我创建了一个存储过程,每隔x分钟就会被一个事件调用。这是我的代码:

delimiter //
        CREATE PROCEDURE checkPromoValidity()
        BEGIN
         DECLARE done INT DEFAULT FALSE;
         DECLARE id INT;
         DECLARE lvn_status INT;
         DECLARE lvn_validUntil DATE;
         DECLARE cur1 CURSOR FOR SELECT promos.PROMO_NUMBER,promos.VALID_UNTIL,promos.status FROM MDCH_NEW.promos;
         DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

        open cur1;
        check_loop: LOOP
        fetch cur1 into id,lvn_validUntil,lvn_status;
        IF done THEN
              LEAVE check_loop;
            END IF;

        IF (lvn_validUntil > CURDATE()) THEN 
            update mdch_new.promos set MDCH_NEW.PROMOS.status = 0 where mdch_new.promos.PROMO_NUMBER = id;
        END IF;
        end LOOP;
        close cur1;       
        END //

MDCH_NEW = database name
PROMOS= table name
编辑:我改变了我的分隔符//只是为了看 edit2:在最后一个单词后添加空格,仍然得到以下错误.. :(

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第23行

附近的'//'附近使用正确的语法

1 个答案:

答案 0 :(得分:0)

delimiter $$
create procedure return7 ()
BEGIN
  select 7;
END
$$

调用return7();

您可以自由重复使用此代码