mysql procedure 例子

写示例的意义在于熟悉,下次需要的使用的可以快速查询,已经包含大部分语法,个人觉得可以解决80%的类似问题



DELIMITER $$


CREATE PROCEDURE update_core_prod_sequence () 
BEGIN
  DECLARE prod_id_temp INT DEFAULT 0 ;
  DECLARE var INT DEFAULT 0 ;
  DECLARE prod_no_Temp VARCHAR (100) ;
  DECLARE done INT ;
  DECLARE temp CURSOR FOR 
  SELECT 
    prod_id 
  FROM
    core_product 
  WHERE DELETE_FLAG = '1' ;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1 ;
  OPEN temp ;
  REPEAT
    FETCH temp INTO prod_id_temp ;
    SET var = var + 1 ;
    IF var > 10000 
    THEN SET prod_no_Temp = CONCAT('WP', var) ;
    ELSEIF var >= 1000 
    THEN SET prod_no_Temp = CONCAT('WP0', var) ;
    ELSEIF var >= 100 
    THEN SET prod_no_Temp = CONCAT('WP00', var) ;
    ELSEIF var >= 10 
    THEN SET prod_no_Temp = CONCAT('WP000', var) ;
    ELSEIF var > 0 
    THEN SET prod_no_Temp = CONCAT('WP0000', var) ;
    END IF ;
    UPDATE 
      CORE_PRODUCT 
    SET
      PROD_NO = prod_no_Temp 
    WHERE prod_id = prod_id_temp 
    ORDER BY prod_id ASC ;
    commit;
    UNTIL done 
  END REPEAT ;
  CLOSE temp ;
END $$

DELIMITER ;

CALL update_core_prod_sequence();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值