mysql编写一个存储过程,利用游标接收list结果集.批量更新数据

//因为数据库中新增了一列basic_sort ,然后需要根据之前basic_datetime数据中的时间转为时间戳后存入新增的字段中,因为表中数据量有10万+,所以网上查了查写了个存储过程出来,测试通过,10万多条用时不到2分钟

 

我发现复制存储过程的时候有个坑,完整复制过去之后有的地方会报错,报错的位置照着手打一遍就可以了

1. 首先先创建一个存储过程

create procedure update_sort()
begin

end

 

2. 提示成功之后将下面的内容放入begin  和  end之中

DECLARE basic_id VARCHAR(32);
DECLARE basic_datetime VARCHAR(32);
# 设置变量s来进行while循环
DECLARE s int DEFAULT 0;

#设置consume游标,来接收查询的list的结果集
DECLARE consume  CURSOR FOR SELECT a.basic_id as basic_id,a.basic_datetime as basic_datetime from basic a ;
# 当程序发生异常时将s设置为1
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1;
#打开consume游标进行程序的调用
 OPEN consume;
 #将consume的内容赋值给basic_id,basic_datetime;
    FETCH consume into basic_id,basic_datetime;
    while s <> 1 DO
              update basic b set b.basic_sort = UNIX_TIMESTAMP(basic_datetime) where b.basic_id = basic_id; 
    FETCH consume INTO basic_id,basic_datetime;
    end WHILE;
  CLOSE consume;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值