mysql if then else update procedure

时间:2013-04-07 04:13:21

标签: mysql if-statement

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

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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

假设字段名称为source。 尝试在存储过程中添加它:

IF [source] = 'A' OR [source] = 'B' then
  SET chargeTime = now() + interval 1 week
END IF;

答案 1 :(得分:0)

只是猜测一下,但如果sourcechat_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;