--初始化个体关系 CREATE OR REPLACE PROCEDURE shanglifeecif.initIndRelationShip() IS DECLARE BEGIN DELETE FROM shanglifeecif.IndRelationShip; --从保单信息表(POLICY_INFORMATION)获取投保人和被保人的关系并 insert into shanglifeecif.IndRelationShip(irsid,RSType,IndID1,Name1,IDCard1,IndID2,Name2,IDCard2,RSSTime,Role2) SELECT row_number()over(),max(RELATIONTOAPPNT),CUSTOMERNO,max(NAME),max(IDNO),INSUREDNO,max(INSUREDNAME),max(INSUREDIDNO),min(CUSTOMGETPOLDATE), CASE max(RELATIONTOAPPNT) WHEN '子女' THEN case max(INSUREDSEX) when 1 THEN '女儿' WHEN 0 THEN '儿子' end when '父母' THEN case max(INSUREDSEX) when 1 THEN '母亲' WHEN 0 THEN '父亲' end WHEN '配偶' THEN case max(INSUREDSEX) when 1 THEN '妻子' WHEN 0 THEN '丈夫' end when '祖父母、外祖父母' THEN case max(INSUREDSEX) when 1 THEN '(外)祖母' WHEN 0 THEN '(外)祖父' end when '祖孙、外祖孙' THEN case max(INSUREDSEX) when 1 THEN '(外)孙女' WHEN 0 THEN '(外)祖孙' end ELSE max(RELATIONTOAPPNT) END FROM shanghailifeecif.POLICY_INFORMATION WHERE RELATIONTOAPPNT<>'本人' GROUP BY CUSTOMERNO,INSUREDNO; --更新IndRelationShip.Role1为IndRelationShip.Role2的相对角色,即role2为母亲则role1为父亲等 UPDATE shanglifeecif.IndRelationShip sirs SET sirs.role1 = (SELECT CASE slirs.role2 WHEN '父亲' THEN '母亲' WHEN '母亲' THEN '父亲' WHEN '丈夫' THEN '妻子' WHEN '妻子' THEN '丈夫' WHEN '儿子' THEN '女儿' WHEN '女儿' THEN '儿子' ELSE '其它' END FROM shanglifeecif.IndRelationShip slirs WHERE sirs.irsid = slirs.irsid); --此时插入IndRelationShip的IndID1,IndID2为上游系统客户号,根据Individual.SCustID更新为Individual.IndID UPDATE shanglifeecif.IndRelationShip sirs SET (sirs.indid1) = (SELECT si.indid FROM shanglifeecif.individual si WHERE si.scustid = sirs.indid1); UPDATE shanglifeecif.IndRelationShip sirs SET (sirs.indid2) = (SELECT si.indid FROM shanglifeecif.individual si WHERE si.scustid = sirs.indid2); EXCEPTION WHEN HIVE_EXCEPTION THEN INSERT INTO shanglifeecif.exception_log(log_code,log_msg,log_time) VALUES (sqlcode(),sqlerrm(),sysdate()); WHEN Others THEN INSERT INTO shanglifeecif.exception_log(log_code,log_msg,log_time) VALUES (sqlcode(),sqlerrm(),sysdate()); END ;