今天有朋友問我用存儲過程刷數據庫數據怎么寫的,他的要求是兩張表,一張表里面字段為空的話,就從另外一張表中取數據更新這個表.中寫完之后,突然想到在mysql中怎么寫呢mysql存儲過程 更新數據,于是在網上找了一下資料.特意在此記錄一下寫法.(的待會也補上!!!)
因為原來mysql中就有兩張表,就懶得建表了.修改兩張表的數據如下:
現在如果email表中的為空的話,就用表中的更新數據,代碼如下:
() -- 創建存儲過程
begin -- 開始存儲過程
my_id int; -- 自定義變量1
(50); -- 自定義變量2
done INT FALSE; -- 自定義控制游標循環變量,默認false
FOR ( id, from email where is null or = ''); -- 定義游標并輸入結果集 結果集越少越好
FOR NOT FOUND SET done = TRUE; -- 綁定控制變量到游標,游標循環結束自動轉true
OPEN ; -- 打開游標
: LOOP -- 開始循環體,為自定義循環名,結束循環時用到
FETCH into my_id, ; -- 將游標當前讀取行的數據順序賦予自定義變量12
IF done THEN -- 判斷是否繼續循環
LEAVE ; -- 結束循環
END IF;
-- 自己要做的事情,在 sql 中直接使用自定義變量即可
-- if( is null or = '') then 這樣寫的循環次數太多了
email set = ( from where id = my_id) where id = my_id;
; -- 提交事務
-- end if;
END LOOP ; -- 結束自定義循環體
CLOSE ; -- 關閉游標
END; -- 結束存儲過程
-- sql 執行存儲過程
call ();
-- * from email
-- sql 刪除存儲過程
drop ;
編譯過后執行存儲過程mysql存儲過程 更新數據,結果如圖:
可以清楚的發現email中的數據被更新了.