You are on page 1of 2

CREATE OR REPLACE PROCEDURE G01_claimant_insert AS CURSOR CLAIMANT IS SELECT CLAIMANT_NUMBER,CLAIM_NUMBER,CLAIM_REPORT_DATE,CLAIMAN T_FNAME, CLAIMANT_LNAME,CLAIMANT_ADDRess,CLAIMANT_PHONE,CLAIMANT_SSN,CLAIMANT_TYPE, (select geo_sk from G01_dim_geo where

zip=claimant_zip and state=claimant_state and city=claimant_city) as geo_ref, (select loss_sk from G01_dim_loss d1 where d1.LOSS_id = loss_type) as loss_sk_re f FROM G01S2CLAIM; CLAIMANTID integer; CLAIMANT1 G01_dim_Claimaint%ROWTYPE; data_exist exception; pragma exception_init(data_exist,-00001); BEGIN FOR MREC IN CLAIMANT LOOP begin select 1 into CLAIMANTID from G01_dim_Claimaint d where (mrec.CLAIMANT_NUMBER=d .Claimant_number); exception when no_data_found then CLAIMANTID := -1; end; IF(CLAIMANTID = -1) THEN INSERT INTO G01_dim_Claimaint (Claimant_sk,Geo_sk,Lossid_sk,Claimant_number,Claim_number,Claim_ report_date,Claimant_fname, Claimant_lname,Claimant_addr,Claimant_ssn,Claimant_phone,Claiman t_type,Start_date, End_date,Indicator) VALUES(G01_CLAIMANT.NEXTVAL, mrec.geo_ref,MREC.loss_sk_ref, MREC.CLAIMANT_NUMBER,MREC.CLAIM_NUMBER, MREC.CLAIM_REPORT_DATE,MREC.CLAIMANT_FNAME, MREC.CLAIMAN T_LNAME, MREC.CLAIMANT_ADDRESS, MREC.CLAIMANT_SSN, MREC.CLAIMANT_PHONE , MREC.CLAIMANT_TYPE, SYSDATE, TO_DATE('12/31/9999','MM/DD/YYYY'), 'I'); ELSE SELECT * INTO Claimant1 FROM G01_dim_Claimaint c1 WHERE MREC.CLA IMANT_number = c1.CLAIMANt_number; IF (MREC.CLAIMANT_NUMBER!=CLAIMAnt1 .Claimant_number OR MREC.CLA IM_NUMBER != CLAIMANt1 .Claim_number OR MREC.CLAIM_REPORT_DATE != CLAIMANT1 .Claim_report_date OR MREC.CLAIMANT_FNAME != CLAIMANT1 .Claimant_fname OR mrec.geo_ref != CLAIMANT1.geo_sk OR MREC.CLAIMANT_LNAME != CLAIMANT1.Claimant_lname OR MREC.CLAIMANT_ADDRESS!= CLAIMANT1.Claimant_addr or MREC.CLAIMANT_SSN != CLAIMANT1.Claimant_ssn or MREC.CLAIMANT_PHONE != CLAIMANT1.Claimant_phone or MREC.CLAIMANT_TYPE != CLAIMANT1.Claimant_type) THEN

UPDATE G01_dim_Customer SET END_DATE = SYSDATE-1, INDICATOR = 'U'; INSERT INTO G01_dim_Claimaint (Claimant_sk,Geo_sk,Lossid_sk,Claimant_number,Claim_number,Claim_ report_date,Claimant_fname, Claimant_lname,Claimant_addr,Claimant_ssn,Claimant_phone,Claiman t_type,Start_date, End_date,Indicator) VALUES(G01_CLAIMANT.NEXTVAL, mrec.geo_ref,MREC.loss_sk_ref, MREC.CLAIMANT_NUMBER,MREC.CLAIM_NUMBER, MREC.CLAIM_REPORT_DATE,MREC.CLAIMANT_FNAME, MREC.CLAIMAN T_LNAME, MREC.CLAIMANT_ADDRESS, MREC.CLAIMANT_SSN, MREC.CLAIMANT_PHONE , MREC.CLAIMANT_TYPE, SYSDATE, TO_DATE('12/31/9999','MM/DD/YYYY'), 'I'); else update G01_dim_Claimaint set Claimant_sk=CLAIMANT1.Claimant_sk, Geo_sk=CLAIMANT1.Geo_sk, Lossid_sk=CLAIMANT1.Lossid_sk, Claimant_number=CLAIMANT1.Claimant_number, Claim_number=CLAIMANT1.Claim_number, Claim_report_date=CLAIMANT1.Claim_report_date, Claimant_fname=CLAIMANT1.Claimant_fname, Claimant_lname=CLAIMANT1.Claimant_lname, Claimant_addr=CLAIMANT1.Claimant_addr, Claimant_ssn=CLAIMANT1.Claimant_ssn, Claimant_phone=CLAIMANT1.Claimant_phone, Claimant_type=CLAIMANT1.Claimant_type, Start_date=CLAIMANT1.Start_date, End_date =CLAIMANT1.End_date, indicator = CLAIMANT1.indicator; END IF; end if; END LOOP; exception when data_exist then dbms_output.put_line(' required data is already there'); END;

create sequence G01_CLAIMANT minvalue 1 start with 1 increment by 1 ;

You might also like