Package Head CREATE OR REPLACE PACKAGE refreshWH AS -- ############################################################## -- # PL/SQL package specification -- ############################################################## PROCEDURE refreshCarrierDataValidationReportWH; END refreshWH; Package Body CREATE OR REPLACE PACKAGE BODY refreshWH AS -- ################################################################################### -- # PL/SQL package body -- ################################################################################### PROCEDURE refreshCarrierDataValidationReportWH AS cursor C1 IS select distinct received_dt, message_type, sender_id, flight_number, departure_airport_code, arrival_airport_code from received a, received_passanger b where (a.received_id = b.received_id) and a.RECEIVED_DT > (select LAST_RECEIVED_DT from CTRLTABLE where REPORTNAME = 'CarrierDataValidationReport') order by received_dt; stpCount integer := 0; rcvDtPrcd timestamp; mssgTpPrcd varchar(50); sndrPrcd varchar(50); flghtPrcd varchar(50); dprtrArprtCd varchar(50); arrvlArprtCd varchar(50); BEGIN if((select count(reportName) from CTRLTABLE where REPORTNAME='CarrierDataValidationReport') = 0) THEN insert into CTRLTABLE values('CarrierDataValidationReport',TIMESTAMP_FORMAT('1950-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS'),current timestamp); end if; open C1; fetch C1 into rcvDtPrcd,mssgTpPrcd,sndrPrcd,flghtPrcd,dprtrArprtCd,arrvlArprtCd; WHILE (C1%FOUND) LOOP insert into CarrierDataValidationReportWH values(rcvDtPrcd,mssgTpPrcd,sndrPrcd,flghtPrcd,dprtrArprtCd,arrvlArprtCd); if(mod(stpCount,1000) = 0) THEN update CTRLTABLE set (LAST_RECEIVED_DT,LATESTUPDATE) = (rcvDtPrcd,CURRENT TIMESTAMP); commit work; end if; fetch C1 into rcvDtPrcd,mssgTpPrcd,sndrPrcd,flghtPrcd,dprtrArprtCd,arrvlArprtCd; stpCount := stpCount + 1; END LOOP; update CTRLTABLE set (LAST_RECEIVED_DT,ROWCOUNT,LATESTUPDATE) = ((select max(RECEIVED_DT) from CarrierDataValidationReportWH),CURRENT TIMESTAMP); commit work; close C1; END WHILE; end;