1. 程式人生 > >mysql 存儲過程實現搬表

mysql 存儲過程實現搬表

mysql 存儲過程

實現簡單搬表,使用遊標循環

第一行 DELIMITER //和最後一行的//必須,否則遇到分號就報錯

DELIMITER //
create procedure movedata()
BEGIN
      DECLARE Done INT DEFAULT 0;
     
      DECLARE v_id VARCHAR(30);
      /* 聲明遊標 */
      DECLARE rs CURSOR FOR SELECT id FROM `new`.customer;
      /* 異常處理 */
      DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
     
      /* 打開遊標 */
      OPEN rs;  
     
      /* 逐個取出當前記錄LingQi字段的值,需要進行最大值的判斷 */
      FETCH  rs INTO v_id;     
      /* 遍歷數據表 */
     REPEAT
            IF NOT Done THEN
               insert into `old`.customer(id,idcard_no) (select id+100000,idcard_no from `new`.customer where id = v_id);
            END IF;
           
      FETCH rs INTO v_id;
 
      UNTIL Done END REPEAT;
     
      /* 關閉遊標 */
      CLOSE rs;
 END
 //


mysql 存儲過程實現搬表