1. 程式人生 > >mysql創建存儲過程

mysql創建存儲過程

uid size 執行過程 i+1 rom () query navicat inf

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

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

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

MySQL [XXX_YYY]> delimiter $$

MySQL [XXX_YYY]>CREATE PROCEDURE `updateShopItemXXSkuIdV2`()
-> BEGIN
-> #Routine body goes here...
-> declare i int;
-> set i=0;
-> set @sum=(select count(1) from shop_item_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 shop_item_info where xx_sku_id is null and yn = 1 limit i,1);

-> set @jdSkuId =( select jd_sku_id from item_import_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 shop_item_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 updateShopItemXXSkuIdV2()$$
+--------------------------+
| CONCAT(@log,@sum," 條") |
+--------------------------+
| log query ....126 條 |
+--------------------------+
MySQL [XXX_YYY]> delimiter ;

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

mysql創建存儲過程