mysql读取一张表中的字段循环插入另一张表

时间:2021-05-09 00:42:45
    由于业务需求,需要修改历史数据,一张表是病区信息,里面包括所有病区,另一张表是病区的功能配置,业务代码只能完成在
添加病区并初始化时显示新的功能,但是旧病区无法显示新功能,简单的说就是添加新功能时只能添加到新病区,而旧病区的必须手
动添加到数据库,因此,就有了下面的存储过程来完成这个需求。描述的不是很清楚,可以用来当作存储过程实例来看。

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