mysql 游标 遍历

注意:3/4行、24行、7/8行字段的对应关系。变量名和字段名不要相同。

BEGIN
	DECLARE done BOOLEAN DEFAULT 0;
	DECLARE cur_ent_id VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
	DECLARE cur_entf5_id VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
	DECLARE t_index CURSOR FOR
	
		select entf5_ent_id as ent_id
			,entf5_id
		from `entf5`
		where entf5_time=left(curtime(),5)
		and entf5_ent_id in (
			select distinct vip_ent_id
			from `v_vip`
			where vip_isautof5=1
			and vip_autof5enddate>=curdate()
		);
		
	-- 写法一:DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
	-- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
	-- 写法二:DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
	DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
	OPEN t_index;
	REPEAT
		FETCH t_index INTO cur_ent_id,cur_entf5_id;
			IF done!=1 THEN
			
				update `ent`
				set ent_updatetime=now()
				where ent_id=cur_ent_id;
				
				update `job`
				set job_updatetime=now()
				where job_ent_id=cur_ent_id
				and job_isdel=0
				and job_isshow=1;
				
				insert into `entf5log`(`entf5log_entf5_id`) values (cur_entf5_id);

			END IF;
	UNTIL done END REPEAT;
	CLOSE t_index;
END

你可能感兴趣的:(MYSQL)