CREATE DEFINER=`root`@`localhost` PROCEDURE `NewProc`()
BEGIN
#Routine body goes here...
DECLARE itemId varchar(64); -- id
DECLARE AA varchar(64); -- 省
DECLARE BB varchar(64); -- 市
DECLARE CC varchar(64); -- 区
DECLARE new_province varchar(64); -- 省
DECLARE new_city varchar(64); -- 市
DECLARE new_area varchar(64); -- 区
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标
DECLARE cur_account CURSOR FOR select id,province,city,area from startup_project_copy;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur_account;
-- 遍历
read_loop: LOOP
-- 取值 取多个字段
FETCH NEXT from cur_account INTO itemId,AA,BB,CC;
IF done THEN
LEAVE read_loop;
END IF;
SET new_province = (SELECT Impcode FROM sys_area WHERE AreaID = AA);
SET new_city = (SELECT Impcode FROM sys_area WHERE AreaID = BB);
SET new_area = (SELECT Impcode FROM sys_area WHERE AreaID = CC);
-- 你自己想做的操作
-- INSERT INTO test_city VALUE(new_province, new_city, new_area, itemId);
-- 执行更新
UPDATE startup_project_copy SET province = new_province, city= CONCAT(new_city,'000000'), area = CONCAT(new_area,'000000') WHERE id = itemId;
-- SET @UPDATE = CONCAT('UPDATE startup_project_copy SET province =', new_province,', city=', new_city, ', area =', new_area, ' WHERE id = ',id);
-- PREPARE stm FROM @UPDATE;
-- EXECUTE stm;
-- DEALLOCATE PREPARE stm;
COMMIT;-- 提交
END LOOP;
CLOSE cur_account;
END