1. 程式人生 > 實用技巧 >Mysql遊標小記

Mysql遊標小記

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 next
from cur into rid1; END WHILE;# 關閉釋放遊標 CLOSE cur; SELECT total; END

小記:

1.宣告變數時,要帶著預設值,否則預設為null,一不留神後面判斷時容易寫錯。

2.FETCH into 語句 = fetch next from 語句。

3.在while之前和內部都要新增fetch語句。