//因为数据库中新增了一列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;