存储过程利用光标循环

CREATE DEFINER=`root`@`localhost` PROCEDURE `update_mt_begin_time_is_six`()
BEGIN
#	加载完毕第一次时间表mt_begin_time 判断是否在六环内
DECLARE  cur_id int(11); #	光标定义的id
DECLARE  cur_linkcode varchar(100);#	光标定义的linkcode
DECLARE  search_area_hd int(11); #	转换的地区值 用于条件查询
DECLARE  cur_record CURSOR FOR select id,link_id from mt_begin_time; #	定义光标
DECLARE EXIT HANDLER FOR NOT FOUND CLOSE cur_record; #	异常处理
OPEN  cur_record;#打开光标
REPEAT
	FETCH  cur_record INTO cur_id,cur_linkcode;
	SELECT CONVERT(`area_hd`,SIGNED) INTO search_area_hd  FROM jing_vehicle_result_mapping WHERE link_id=cur_linkcode;
		IF(search_area_hd>0) THEN UPDATE mt_begin_time SET is_six = 1 WHERE id=cur_id;
			ELSE UPDATE mt_stay_bj SET is_six = 0 WHERE id=cur_id;
		END IF;
UNTIL	cur_id=null END REPEAT; #	循环结束
CLOSE cur_record; #	关闭游标
END
原文地址:https://www.cnblogs.com/liclBlog/p/15349574.html