场景:不能一次性批量更新完成,修改或查询数据是依赖于上一条数据执行完成后,拿到上一条数据比较。
又不想通过代码去写一个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);