0
点赞
收藏
分享

微信扫一扫

sql语句循环执行

场景:不能一次性批量更新完成,修改或查询数据是依赖于上一条数据执行完成后,拿到上一条数据比较。

又不想通过代码去写一个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);

 

举报

相关推荐

0 条评论