1. 程式人生 > >MYSQL 使用儲存過程批量更新表資料

MYSQL 使用儲存過程批量更新表資料

DELIMITER //
CREATE PROCEDURE `update_user`()  
BEGIN
DECLARE userId BIGINT;
DECLARE openId VARCHAR(40);
declare stop int default 0; 
DECLARE cur CURSOR FOR (SELECT open_id,uid FROM user_map);
/* 
定義遊標的結束,當遍歷完成時,將stop設定為null 
這裡也可以寫成 DECLARE CONTINUE HANDLER FOR NOT FOUND SET stop = null;
*/
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop = null;  
   /*開遊標*/  
    OPEN cur;  
    /*遊標向下走一步,將查詢出來的兩個值付給定義的兩個變數*/  
    FETCH cur INTO openId,userId;  
    /* 迴圈體  */  
    WHILE ( stop is not null) DO  
   /*更新資料表*/
    update user_info set  open_id=openId where uid = userId ;  
    /*遊標向下走一步*/  
    FETCH cur INTO openId,userId;  
    END WHILE;
/*關閉遊標*/ 
    CLOSE cur;  
END;  
//
DELIMITER ;