MySQL存儲過程-循環遍歷查詢到的結果集
1、創建存儲過程
(更好的閱讀體驗,請移步我的個人博客)根據MySQL的語法創建存儲過程,要注意的是如果循環遍歷查詢到的結果集,取出結果集中的數據做操作。
CREATE DEFINER=`root`@`%` PROCEDURE `alter_view_counts`()
BEGIN
#聲明結束標識
DECLARE end_flag int DEFAULT 0;
DECLARE albumId bigint;
#聲明遊標 album_curosr
DECLARE album_curosr CURSOR FOR SELECT album_id FROM album;
#設置終止標誌
DECLARE CONTINUE HANDLER FOR NOT FOUND SET end_flag=1;
#打開遊標
OPEN album_curosr;
#遍歷遊標
REPEAT
#獲取當前遊標指針記錄,取出值賦給自定義的變量
FETCH album_curosr INTO albumId;
#利用取到的值進行數據庫的操作
UPDATE album SET album.views_count= (SELECT SUM(light_chat.views_count) FROM `light_chat` WHERE light_chat.album_id = albumId) WHERE album.album_id = albumId;
# 根據 end_flag 判斷是否結束
UNTIL end_flag END REPEAT;
#關閉遊標
close album_curosr;
END
2,調用存儲過程
CALL alter_view_counts()