mysql中遊標書寫的方法:先宣告遊標;然後開啟遊標,代號為【OPEN cursor_name】;接著捕捉遊標;最後關閉遊標,代號為【CLOSE cursor_name】。
本教學操作環境:windows7系統、mysql5.8版,此方法適用於所有品牌電腦。
更多相關免費學習推薦:mysql教學(影片)
#mysql中遊標書寫的方法:
1,什麼是遊標
在預存程序或函數中,可以使用遊標對結果集進行循環處理。以下是個人的見解,遊標就類似java循環中的自增變數i。
2,遊標的使用
遊標的使用包含一下三個步驟:
1,宣告遊標
格式: DECLARE cursor_name CURSOR FOR select_statement;
# cursor_name:遊標名,使用者自己設定,最好見名知意。
select_statement:完整的查詢語句,查詢表中的列名(後面案例詳解)。
2,開啟遊標
cursor_name:宣告時的遊標名稱。
格式:OPEN cursor_name;
3,捕獲光標
格式:FETCH cursor_name INTO var_name...;
( ……表示可以有多個)
cursor_name:宣告時的遊標名稱。
var_name:自訂的變數名稱。 (後面案例詳解)
4,關閉遊標
格式:CLOSE cursor_name;
cursor_name:宣告時的遊標名稱:宣告時的遊標名。
3,遊標使用的小案例該案例並沒有實際的意義,只是單純的為了演示遊標使用
首先創建一個users表
CREATE TABLE `users` ( `u_id` int(4) NOT NULL, `u_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `u_age` int(4) DEFAULT NULL, PRIMARY KEY (`u_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
插入以下資料
建立一個儲存過程,名為select_age
BEGIN #Routine body goes here... declare i_user_id int; declare i_user_age int; declare cur_age cursor for select u_id,u_age from users; declare exit handler for not FOUND close cur_age; set @age_ji = 0; set @age_ou = 0; open cur_age; REPEAT fetch cur_age into i_user_id,i_user_age; if i_user_id%2 = 1 THEN set @age_ji = @age_ji + i_user_age; else set @age_ou = @age_ou + i_user_age; end if; until 0 end REPEAT; close cur_age; END
呼叫該預存程序
call select_age(); select @age_ji,@age_ou;
程式碼的詳細解釋:
1,先定義兩個局部變數i_user_id,i_user_age;用來存放遊標遍歷的表格的列。
2,宣告一個遊標,遍歷users表中的u_id,u_age 兩個欄位。
3,宣告一個異常,在發生異常時關閉遊標。
4,設定兩個使用者變數用來儲存最終結果。
5,開啟遊標。
6,寫一個循環體,終結條件是遍歷到表的最後一列。
7,捕捉遊標,將遍歷到的內容放到兩個局部變數裡面。
8,透過對 i_user_id 的奇偶的判斷,分別將i_user_age 加到兩個使用者變數中
9,關閉遊標。
4,注意事項### 變量,自訂異常,異常處理,遊標都是透過declare關鍵字定義的,他們之間是有順序要求的。變數、自訂異常必須放在最前面,然後是遊標的聲明,最後是異常處理的聲明。 ###以上是mysql中遊標如何書寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!