在mysql操作中,有時需要對查出的結果集進行每條記錄操作時,可以使用游標來處理,游標充當了指針的作用,每次指向結果集中的一條記錄
使用語法:
- 聲明一個游標: declare 游標名稱 CURSOR for record;(record可以為任意查詢的結果集)
- 打開定義的游標:open 游標名稱;
- 獲得下一行數據:FETCH 游標名稱 into testrangeid,versionid;
- 需要執行的語句(增刪改查):這里視具體情況而定
- 釋放游標:CLOSE 游標名稱;
示例:
BEGIN # 遍歷停止標識 DECLARE done INT DEFAULT FALSE; # 商品名稱 DECLARE good_name VARCHAR(20); DECLARE count INT DEFAULT 0; # 總數 DECLARE total INT DEFAULT 0; # 游標定義,此處為后面查詢的結果集,游標類似於指針作用,每次指向一條記錄,從而對當前的這條記錄進行操作 DECLARE cur CURSOR FOR SELECT tg.good_name, od.count FROM t_order_detail od LEFT JOIN t_goods tg ON od.goods_id = tg.id WHERE od.goods_id = 1; # 當沒有找到記錄時設置遍歷標識 DECLARE continue HANDLER FOR NOT FOUND SET done = TRUE; # 打開定義的游標 OPEN cur; # 獲取下一行數據 FETCH cur INTO good_name, count; # 遍歷處理 WHILE NOT done DO SET total = total + 1; # 獲取下一行數據 FETCH cur INTO good_name, count; END WHILE; # 關閉釋放游標 CLOSE cur; SELECT total; END
最后SELECT total是為了查看total結果
