mysql存储过程+游标

-- 创建存储过程
DELIMITER // ---- 改变 MySQL delimiter 为:“//”


DROP PROCEDURE if EXISTS proc_dist_update//
CREATE PROCEDURE proc_dist_update()
BEGIN
     DECLARE finished INT DEFAULT 0;
     DECLARE distId,newId bigint(20);
     DECLARE distName varchar(50) CHARACTER SET utf8;
     DECLARE distY,distX varchar(50) CHARACTER SET utf8;
     -- 定义游标
     DECLARE dist_cursor CURSOR for select id,name,y,x from nets_test_district;
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
     OPEN dist_cursor;
     dist_loop:LOOP
       -- 使用游标检索数据
       FETCH dist_cursor into distId,distName,distY,distX;
IF finished = 1 THEN
LEAVE dist_loop;
END IF;


       -- 查询新表中ID
       SELECT ta.id INTO newId FROM nets_test_area ta WHERE ta.name=distName;


       -- 更新临时表数据
       UPDATE nets_test_area ta set ta.y=distY,ta.x=distX WHERE ta.id=newId;


       -- 更新测试结果数据
       UPDATE nets_test_environment te set te.DIST_ID=newId WHERE te.DIST_ID=distId;


     END LOOP dist_loop;
     CLOSE dist_cursor;
  END;


//


-- 还原分隔符
DELIMITER ;


 -- 调用存储过程
call proc_dist_update();
-- 清空原表数据
truncate TABLE nets_test_district;
-- 新数据导入原表
INSERT INTO nets_test_district SELECT * FROM nets_test_area;
-- 删除临时表
DROP TABLE nets_test_area;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值