场景:不能一次性批量更新完成,修改或查询数据是依赖于上一条数据执行完成后,拿到上一条数据比较。
又不想通过代码去写一个junit完成语句。所以,写了个mysql存储过程。。
其中
#删除过程
DROP PROCEDURE IF EXISTS updateStock;
#创建过程,待参数。入参用IN声明。出参用OUT CREATE PROCEDURE updateStock (IN c_num INTEGER ) BEGIN SET @i = 0;# 变量赋值 WHILE @i < c_num DO # 结束循环的条件: 当i大于5时跳出while循环 SET @i = @i + 1; #临时变量累加 update t_his_ab a LEFT JOIN t_his_ab b on a.stock_no_full = b.stock_no_full and a.account_id = b.account_id and a.settle_date = DATE_ADD(b.settle_date,INTERVAL 1 DAY) set a.build_no = b.build_no, a.build_time=b.build_time, a.liquidation_time=b.liquidation_time, a.date_delivery_last=b.liquidation_time, a.stock_status = b.stock_status where a.build_no is null and b.build_no is not null; select count(0) into @co from t_his_account_stock a where a.build_no is null ; SELECT @i, @co; #输出当次结果。 END WHILE;# 结束while循环 END;
# 调用过程 CALL updateStock(1);