欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle数据迁移存储过程

程序员文章站 2022-03-07 14:24:48
...

今天很尴尬,投了一个简历被hr说16就上大一,说我造假,哎,主要是这家公司还有我朋友老子给他们提供了很多解决方案,改了好多bug他们的项目我还都熟悉,阿西吧怎么碰到这么个辣鸡HR
吐槽完毕,步入正题另一个朋友碰到了Oracle的问题 plsql他们玩过;
要求,三张表联查将数据写入另一张表

create or replace procedure ps_campusAim
is
begin
 --truncate table CRMTEST.LK_CAMPUSAIM;
 INSERT INTO CRMTEST.LK_CAMPUSAIM(id,termId,termName,campusId,campusName,aimMoney,aimStu,aimSub,
       freeSub,freeStu)
 select ca.id,ca.termid ,t.termname,ca.campusid,ci.campusname,ca.aimmoney,ca.aimstu,
      ca.aimsub,ca.freesub,ca.freestu
 from CampusAim ca
 left join CampusInfo ci
  on ca.Campusid=ci.CampusID
 left join terminfo t
  on ca.Termid= t.termid;
  
 commit;
end; 

这是他写的plsql后来我改了语句发现还在报错
Oracle数据迁移存储过程
原来他查询结果里有NULL值知道问题所在就可以解决了选用NVL函数将NULL替换为"null"

create or replace procedure ps_campusAim
is
begin
 execute immediate 'truncate table CRMTEST.LK_CAMPUSAIM';
 INSERT INTO CRMTEST.LK_CAMPUSAIM(id,termId,termName,campusId, campusName ,aimMoney,aimStu,aimSub,
       freeSub,freeStu)
 select ca.id,ca.termid ,t.termname,ca.campusid,nvl(ci.campusName,'null') ,ca.aimmoney,ca.aimstu,
      ca.aimsub,ca.freesub,ca.freestu
 from CampusAim ca
 left join CampusInfo ci
  on ca.Campusid=ci.CampusID
 left join terminfo t
  on ca.Termid= t.termid;
  commit;
end;

问题解决

相关标签: oracle sql