Oracle 使用多if条件简化程序

Oracle 使用多if条件简化程序,oracle,plsql,procedure,Oracle,Plsql,Procedure,我是新来的,有一个程序需要简化。 它有多个if和insert,我想简化它 开始 如果oldProductType不为NULL且PRODUCTTYPE!=那么旧产品类型呢 groupIdVal:=prcChangeGroupIdSeq.NEXTVAL; 插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE); 插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid) 值(prcChangeLogIdSe

我是新来的,有一个程序需要简化。 它有多个if和insert,我想简化它

开始
如果oldProductType不为NULL且PRODUCTTYPE!=那么旧产品类型呢
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、“项目”、“产品类型”、oldProductType、PRODUCTTYPE)、;
更新ab_项目集product_type=PRODUCTTYPE,其中project_id=PROJECTID;
如果结束;
如果oldProgramManager不为NULL且PROGRAMMANAGER!=老程序经理
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL,groupIdVal,'project','Program Manager',old Program Manager,Program Manager',');
更新ab_项目集program_manager=PROGRAMMANAGER,其中project_id=PROJECTID;
如果结束;
如果oldProductManager不为NULL且PRODUCTMANAGER!=老产品经理
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、'项目'、'产品经理'、旧产品经理、产品经理');
更新ab_项目集product_manager=PRODUCTMANAGER,其中project_id=PROJECTID;
如果结束;
如果oldProductName不为NULL且PRODUCTNAME!=那么oldProductName
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、'project','Product Name',oldProductName、PRODUCTNAME',);
更新ab_项目集product_name=PRODUCTNAME,其中project_id=PROJECTID;
如果结束;
如果oldDescription不为NULL且PRODUCTDESCRIPTION!=旧的描述
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、'project'、'PRODUCTDESCRIPTION'、oldDescription、PRODUCTDESCRIPTION');
更新ab_项目集product_description=PRODUCTDESCRIPTION,其中project_id=PROJECTID;
如果结束;
如果oldRequestType不为NULL且REQUESTTYPE!=那么oldRequestType
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、'project','Request Type',oldRequestType,REQUESTTYPE',);
更新ab_项目集request_type=REQUESTTYPE,其中project_id=PROJECTID;
如果结束;
如果oldOtherProduct不为NULL且OTHERPRODUCT!=那么旧产品呢
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、‘项目’、‘其他产品’、oldOtherProduct、OTHERPRODUCT、’);
更新ab_项目集Other_Product=OTHERPRODUCT,其中项目id=PROJECTID;
如果结束;
如果oldbusinessrational不为NULL且businessrational!=那好吧
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
价值观(prcChangeLogIdSeq.NEXTVAL、groupIdVal、'project'、'businessoriging'、oldbusinessoriging、businessoriging');
更新ab_项目集business_rational=businessrational,其中project_id=projectd;
如果结束;
如果oldSoftwareDependency不为NULL且SOFTWAREDEPENDENCY!=那么旧软件依赖性呢
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL,groupIdVal,'project','Software Dependency',oldsoftwaredpendency,softwaredpendency,');
更新ab_项目集software_dependency=SOFTWAREDEPENDENCY,其中project_id=PROJECTID;
如果结束;
如果OldOtherDependency不为NULL且OTHERDEPENDENCY!=那么OldOtherDependency呢
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、'project','Other Dependency',OldOtherDependency,OTHERDEPENDENCY',);
更新ab_项目集other_dependency=OTHERDEPENDENCY,其中项目id=PROJECTID;
如果结束;
如果OldReleaseCycleID不为NULL且RELEASECYCLEID!=那么OldReleaseCycleID呢
groupIdVal:=prcChangeGroupIdSeq.NEXTVAL;
插入CHANGE_组值(groupIdVal、projectid、user_id、SYSDATE);
插入更改日志(id、groupId、类型、字段、oldvalue、newvalue、fieldtypeid)
值(prcChangeLogIdSeq.NEXTVAL、groupIdVal、'project','RELEASECYCLEID',OldReleaseCycleID,ReleaseCleId',);
更新ab_项目集release_cycle_id=RELEASECYCLEID,其中project_id=PROJECTID;
如果结束;
犯罪
例外
当其他人
raise|U应用程序|U错误(-20001,'遇到错误-'| | SQLCODE | |'-错误-'| | SQLERRM);
结束;

案例可能就是您想要的

您这里所说的“优化”是什么意思?通常情况下,这会