mysql之存儲過程(一)


今天開發一個需求,需要在一個舊表中增加一列並且對已經的表中記錄初始化新列的值,

由於是一次性的工作,故寫了個存儲過程來代替代碼程序初始化

創建及執行過程記錄如下:

MySQL [XXX_YYY]> delimiter $$

MySQL [XXX_YYY]>CREATE  PROCEDURE `updateShopIXXXXXSkuIdV2`()
   ->  BEGIN
   ->   #Routine body goes here...
   ->  declare i int;
   ->  set i=0;
   ->   set @sum=(select count(1) from shopxxx_info where xx_sku_id is null and yn = 1);
   ->  set @log = "log query ....";
   ->   select CONCAT(@log,@sum," 條");
 
    ->  while i<@sum do
    ->   set @itemId =( select item_id from shopxxx_info where xx_sku_id is null and yn = 1 limit i,1);

    ->    set @jdSkuId =( select jd_sku_id from item_yyyy_table where item_id = @itemId  limit 1);
    ->    #set @itemId = 4499991;
    ->    #set @xxSkuId =29825634;
    ->    #select @itemId ,  @jdSkuId;
    ->    if @itemId is NULL THEN
    ->     select @itemId ;
    ->    elseif @xxSkuId is NULL THEN
    ->     select @xxSkuId;
    ->    else
    ->       update shopxxxx_info set xx_sku_id = @xxSkuId ,modified = now() where item_id = @itemId and yn = 1;
    ->    end if;
    ->       set i=i+1;
    ->    end while;
    ->  
    -> END$$
Query OK, 0 rows affected (0.01 sec)

MySQL [XXX_YYY]> call updateShopIXXXXXSkuIdV2()$$
+--------------------------+
| CONCAT(@log,@sum," 條")  |
+--------------------------+
| log query ....126 條     |
+--------------------------+
MySQL [XXX_YYY]> delimiter ;

ps:創建存儲過程可以用navicate等客戶端工具生成調試,然后把調試好的存儲過程腳本,在生產環境中重寫一下就好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM