MySQLストアド・プロシージャ-クエリの結果セットをループします.

895 ワード

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()