请问oracle存储过程中几个表关联查询出一条数据,怎么拆分成几行数据并用来更新其他表

img


比如说几个表关联查处了这一行数据,当假期(分钟)>480,我就需要把他从拆分成几行数据,然后把他的假期(分钟)更新到另外一张表,请问应该怎么做呢,拆分出来的几行数据我应该用什么暂时存起来然后拿去更新吗

存储过程里,对于临时使用的值,不需要存到表里,要么存变量里,要么使用游标。
如果你前面这个查询是个游标,后面自然而然就是接个循环,循环里就可以直接用游标的值进行判断,并且可以根据判断结果去进行相应处理

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没有处理你的工作日,主要是因为每个公司的工作日都会有区别,而且法定节假日也是一个外部数据,这个只能你自己去匹配日期了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632