Mysql遊標小記
阿新 • • 發佈:2020-10-28
CREATE DEFINER=`root`@`%` PROCEDURE `createMenuByrole`() BEGIN DECLARE done INT default false; DECLARE rid1 INT default 0; DECLARE total INT DEFAULT 0; DECLARE cur CURSOR FOR SELECT rid FROM ut_role WHERE type = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done= true;# 開啟定義的遊標 OPEN cur;# 獲取下一行資料 FETCH next from cur INTO rid1;# 遍歷處理 WHILE not done DO SET total = total + 1;# 獲取下一行資料 insert into abc(rid,mid,PERMISSION_ACTION) select rid1,mid,PERMISSION_ACTION from ut_permission_role where rid=396; #FETCH cur INTO rid1; fetch nextfrom cur into rid1; END WHILE;# 關閉釋放遊標 CLOSE cur; SELECT total; END
小記:
1.宣告變數時,要帶著預設值,否則預設為null,一不留神後面判斷時容易寫錯。
2.FETCH into 語句 = fetch next from 語句。
3.在while之前和內部都要新增fetch語句。