1. 程式人生 > >mysql儲存過程批量更新

mysql儲存過程批量更新

mysql儲存過程批量更新

以下sql單獨執行沒問題,但是在儲存過程中執行2次就會報錯

update tbl_a a ,tbl_b b set a.name =b.name where a.id=b.id

在儲存過程中,取代的方案是使用遊標迴圈更新

drop procedure IF EXISTS test_proc;
delimiter //
create procedure test_proc()
begin
	-- 宣告一個標誌done, 用來判斷遊標是否遍歷完成
	DECLARE done INT DEFAULT 0;

	-- 宣告一個變數,用來存放從遊標中提取的資料
-- 特別注意這裡的名字不能與由遊標中使用的列明相同,否則得到的資料都是NULL DECLARE tname varchar(50) DEFAULT NULL; DECLARE tpass varchar(50) DEFAULT NULL; -- 宣告遊標對應的 SQL 語句 DECLARE cur CURSOR FOR select name, password from netingcn_proc_test; -- 在遊標迴圈到最後會將 done 設定為 1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; -- 執行查詢
open cur; -- 遍歷遊標每一行 REPEAT -- 把一行的資訊存放在對應的變數中 FETCH cur INTO tname, tpass; if not done then -- 這裡就可以使用 tname, tpass 對應的資訊了 select tname, tpass; end if; UNTIL done END REPEAT; CLOSE cur; end // delimiter ; -- 執行儲存過程 call test_proc();

在遊標中迴圈更新每條資料

參考資料