0

我想要程序中的升级声明:

DROP PROCEDURE IF EXISTS `update` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `update`
     (IN mobile VARCHAR(20), IN registered BOOLEAN, IN charge BOOLEAN, IN debit_mon INT)
BEGIN
 DECLARE chargeTime Datetime;
 DECLARE lastdayNow Integer;
 DECLARE lastdayNext Integer;

 SET lastdayNow =  DAY(now());
 SET lastdayNext =  DAY(LAST_DAY(now() + interval 1 month));

 IF lastdayNow > lastdayNext then
   SET chargeTime = LAST_DAY(now() + interval 1 month);
 ELSE
   SET chargeTime = now() + interval 1 month;
 END IF;

 UPDATE `chat_acc` SET
     `registered` = registered,
     `charge` = charge,
     `debit_mon` = debit_mon,
     CHARGE_TIME = chargeTime 
   WHERE `phone` =mobile;
END $$

我想添加案例检查字段source

if  source = 'A' or source = 'B' then set Charge Time = now() + interval 1 week

感谢您的帮助

4

2 回答 2

0

假设字段名称是source. 尝试将其添加到您的存储过程中:

IF [source] = 'A' OR [source] = 'B' then
  SET chargeTime = now() + interval 1 week
END IF;
于 2013-04-07T04:21:30.560 回答
0

只是在这里猜测,但如果source是一个列,chat_acc你可以在你的声明中做这样的事情UPDATE

UPDATE `chat_acc` SET
   `registered` = registered,
   `charge` = charge,
   `debit_mon` = debit_mon,
   CHARGE_TIME =
      CASE WHEN chat_acc.source IN ('A', 'B') THEN now() + interval 1 week
      ELSE chargeTime
      END
WHERE `phone` =mobile;
于 2013-04-07T04:32:57.253 回答