由于业务需求,需要修改历史数据,一张表是病区信息,里面包括所有病区,另一张表是病区的功能配置,业务代码只能完成在
添加病区并初始化时显示新的功能,但是旧病区无法显示新功能,简单的说就是添加新功能时只能添加到新病区,而旧病区的必须手
动添加到数据库,因此,就有了下面的存储过程来完成这个需求。描述的不是很清楚,可以用来当作存储过程实例来看。
DELIMITER //
CREATE PROCEDURE insert_device_configuration()
BEGIN
DECLARE record_not_found INTEGER DEFAULT 0;
DECLARE wardName VARCHAR(50) DEFAULT '';
DECLARE isInsert INTEGER DEFAULT 0;
DECLARE my_cursor CURSOR FOR SELECT wardNo FROM `ward_info`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET record_not_found = 1;
OPEN my_cursor;
insertloop: LOOP
FETCH my_cursor INTO wardName;
IF record_not_found THEN
LEAVE insertloop;
END IF;
SELECT COUNT(*) INTO isInsert FROM `device_configuration` WHERE wardNo = wardName AND moduleId = 21;
IF isInsert = 0 THEN
INSERT INTO `device_configuration` (wardNo,devType,moduleId,moduleOrder,hasLink,linkUrl,showCondition,isStaffUse,isPassword,isShowModule) VALUES (wardName,0,21,5,0,'',1,1,0,0);
END IF;
END LOOP insertloop;
CLOSE my_cursor;
END
//
DELIMITER ;
CALL insert_device_configuration();