存储过程里,对于临时使用的值,不需要存到表里,要么存变量里,要么使用游标。
如果你前面这个查询是个游标,后面自然而然就是接个循环,循环里就可以直接用游标的值进行判断,并且可以根据判断结果去进行相应处理
begin
for rec in (select * from 表a) loop
if rec.请假 > 480 then
loop
insert into 表b values (rec.日期, case when rec.请假>480 then 480 else rec.请假 end );
rec.请假 := rec.请假 - 480;
rec.日期:=rec.日期+1;
if rec.请假 < 0 then
exit;
end if;
end loop;
end if;
end loop;
end;
上面这个sql没有处理你的工作日,主要是因为每个公司的工作日都会有区别,而且法定节假日也是一个外部数据,这个只能你自己去匹配日期了
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!