Returning from Exception Handler
From: Kevin J. Donovan <kdonovan_at_edgewater.com>
Date: 1996/08/09
Message-ID: <897cc$f2b1d.175_at_ineter.edgewater.com>
*** Creating Procedure LOADTAB_DAILY_LEG
FROM
SCH_TRIP_PLAN,
SCH_LEG_PLAN,
FACILITY,
FACILITY FACILITY_DUP
WHERE(
(INVAR_NEXTDT BETWEEN SCH_TRIP_PLAN.EFFECTIVE_DT AND SCH_TRIP_PLAN.DISCONTINUE_DT) AND
(INVAR_NEXTDT BETWEEN SCH_LEG_PLAN.EFFECTIVE_DT AND
OPEN NEW_LEGS;
LOOP
END LOADTAB_DAILY_LEG;
/ Received on Fri Aug 09 1996 - 00:00:00 CEST
Date: 1996/08/09
Message-ID: <897cc$f2b1d.175_at_ineter.edgewater.com>
/* ***********************************************************************
*** Creating Procedure LOADTAB_DAILY_LEG
- Procedure maintains Table DAILY_LEG
- Loads the daily_leg table based on
- values in sch_trip_plan and
- sch_leg_plan. Then update the tail
- number with the tail no for that
- same ROUTE / TRIP / LEG from the
- previous day. *****************************
- EDIT: K. Donovan *****************************
- DESC: Handle Overlapping TRIP & LEG
- Records. *****************************
*/ CREATE OR REPLACE PROCEDURE LOADTAB_DAILY_LEG (INVAR_NEXTDT IN DAILY_LEG.EFFECTIVE_DT%TYPE) AS LVAR_RTE DAILY_LEG.ROUTE%TYPE NULL; LVAR_TRP DAILY_LEG.TRIP%TYPE NULL; LVAR_EFD DAILY_LEG.EFFECTIVE_DT%TYPE NULL; LVAR_LEG DAILY_LEG.LEG%TYPE NULL; LVAR_ORI DAILY_LEG.ORIGIN%TYPE NULL; LVAR_DST DAILY_LEG.DESTINATION%TYPE NULL; LVAR_DCT DAILY_LEG.DISCONTINUE_DT%TYPE NULL; LVAR_DTZ DAILY_LEG.DESTINATION_TIME_ZONE%TYPE NULL; LVAR_OTZ DAILY_LEG.ORIGIN_TIME_ZONE%TYPE NULL; LVAR_STD DAILY_LEG.STD%TYPE NULL; LVAR_STA DAILY_LEG.STA%TYPE NULL; LVAR_STT DAILY_LEG.SCHEDULED_TENDER_TM%TYPE NULL; LVAR_SDT DAILY_LEG.SCHEDULED_DELIVERY_TM%TYPE NULL; LVAR_NET DAILY_LEG.NETWORK%TYPE NULL; LVAR_NOL DAILY_LEG.NO_OF_LEGS%TYPE NULL; LVAR_EQT DAILY_LEG.EQUIPMENT_TYPE%TYPE NULL; LVAR_CNT DAILY_LEG.CTS_NEXT_TRIP%TYPE NULL; LVAR_STY DAILY_LEG.SERVICE_TYPE%TYPE NULL; LVAR_IOI DAILY_LEG.IN_OUT_INDICATOR%TYPE NULL; ERR_DUP EXCEPTION; LVAR_CHK NUMBER; PRAGMA EXCEPTION_INIT (ERR_DUP, -00001); CURSOR NEW_LEGS IS SELECT SCH_TRIP_PLAN.ROUTE, SCH_TRIP_PLAN.TRIP, INVAR_NEXTDT, SCH_LEG_PLAN.LEG, SCH_LEG_PLAN.ORIGIN, SCH_LEG_PLAN.DESTINATION, SCH_TRIP_PLAN.DISCONTINUE_DT, FACILITY.TIME_ZONE AS "ORIGIN_TZ", FACILITY_DUP.TIME_ZONE AS "DESTN_TZ", DECODE (TO_CHAR(SCH_LEG_PLAN.STD,'DD-MON-YYYY'),'01-JAN-1980', TO_DATE(TO_CHAR(INVAR_NEXTDT, 'DD-MON-YYYY') ||' '|| TO_CHAR(SCH_LEG_PLAN.STD,'HH24:MI:SS'),'DD-MON-YYYY HH24:MI:SS'), TO_DATE(TO_CHAR(INVAR_NEXTDT + 1, 'DD-MON-YYYY') ||' '|| TO_CHAR(SCH_LEG_PLAN.STD,'HH24:MI:SS'),'DD-MON-YYYY HH24:MI:SS')) AS "STD_VAR", DECODE (TO_CHAR(SCH_LEG_PLAN.STA,'DD-MON-YYYY'),'01-JAN-1980', TO_DATE(TO_CHAR(INVAR_NEXTDT, 'DD-MON-YYYY') ||' '|| TO_CHAR(SCH_LEG_PLAN.STA,'HH24:MI:SS'),'DD-MON-YYYY HH24:MI:SS'), TO_DATE(TO_CHAR(INVAR_NEXTDT + 1, 'DD-MON-YYYY') ||' '|| TO_CHAR(SCH_LEG_PLAN.STA,'HH24:MI:SS'),'DD-MON-YYYY HH24:MI:SS')) AS "STA_VAR", DECODE (TO_CHAR(SCH_LEG_PLAN.SCHEDULED_TENDER_TM,'DD-MON-YYYY'), '01-JAN-1980', TO_DATE(TO_CHAR(INVAR_NEXTDT, 'DD-MON-YYYY') ||' '|| TO_CHAR(SCH_LEG_PLAN.SCHEDULED_TENDER_TM,'HH24:MI:SS'),'DD-MON-YYYY HH24:MI:SS'), '02-JAN-1980', TO_DATE(TO_CHAR(INVAR_NEXTDT + 1, 'DD-MON-YYYY') ||' '|| TO_CHAR(SCH_LEG_PLAN.SCHEDULED_TENDER_TM,'HH24:MI:SS'),'DD-MON-YYYY HH24:MI:SS'), NULL) AS "SCHED_TEND", DECODE (TO_CHAR(SCH_LEG_PLAN.SCHEDULED_DELIVERY_TM,'DD-MON-YYYY'), '01-JAN-1980', TO_DATE(TO_CHAR(INVAR_NEXTDT, 'DD-MON-YYYY') ||' '||
'02-JAN-1980',
TO_DATE(TO_CHAR(INVAR_NEXTDT + 1, 'DD-MON-YYYY') ||' '||
TO_CHAR(SCH_LEG_PLAN.SCHEDULED_DELIVERY_TM,'HH24:MI:SS'),'DD-MON-YYYY
HH24:MI:SS'),
NULL) AS "SCHED_DEL",
SCH_TRIP_PLAN.NETWORK, SCH_TRIP_PLAN.NO_OF_LEGS, SCH_TRIP_PLAN.EQUIPMENT_TYPE, SCH_TRIP_PLAN.CTS_NEXT_TRIP, SCH_TRIP_PLAN.SERVICE_TYPE, SCH_TRIP_PLAN.IN_OUT_INDICATOR
FROM
SCH_TRIP_PLAN,
SCH_LEG_PLAN,
FACILITY,
FACILITY FACILITY_DUP
WHERE(
(INVAR_NEXTDT BETWEEN SCH_TRIP_PLAN.EFFECTIVE_DT AND SCH_TRIP_PLAN.DISCONTINUE_DT) AND
(INVAR_NEXTDT BETWEEN SCH_LEG_PLAN.EFFECTIVE_DT AND
SCH_LEG_PLAN.DISCONTINUE_DT) AND (SCH_TRIP_PLAN.ROUTE = SCH_LEG_PLAN.ROUTE) AND (SCH_TRIP_PLAN.TRIP = SCH_LEG_PLAN.TRIP) AND (SCH_TRIP_PLAN.EFFECTIVE_DT = SCH_LEG_PLAN.EFFECTIVE_DT) AND (SCH_TRIP_PLAN.DISCONTINUE_DT = SCH_LEG_PLAN.DISCONTINUE_DT) AND (SCH_LEG_PLAN.ORIGIN = FACILITY.FACILITY_CODE) AND (SCH_LEG_PLAN.DESTINATION = FACILITY_DUP.FACILITY_CODE));BEGIN
OPEN NEW_LEGS;
LOOP
FETCH NEW_LEGS
INTO
LVAR_RTE,
LVAR_TRP,
LVAR_EFD,
LVAR_LEG,
LVAR_ORI,
LVAR_DST,
LVAR_DCT,
LVAR_DTZ,
LVAR_OTZ,
LVAR_STD,
LVAR_STA,
LVAR_STT,
LVAR_SDT,
LVAR_NET,
LVAR_NOL,
LVAR_EQT,
LVAR_CNT,
LVAR_STY,
LVAR_IOI;
EXIT WHEN NEW_LEGS%NOTFOUND;
SAVEPOINT PERFORM_INSERT;
/* This is a less than desirable method of checking
for duplicates but very effective. */
SELECT COUNT(*)
INTO LVAR_CHK
FROM DAILY_LEG
WHERE (
(DAILY_LEG.ROUTE = LVAR_RTE) AND
(DAILY_LEG.TRIP = LVAR_TRP) AND
(DAILY_LEG.EFFECTIVE_DT = LVAR_EFD) AND
(DAILY_LEG.LEG = LVAR_LEG));
IF LVAR_CHK = 0 THEN
INSERT INTO DAILY_LEG (
ROUTE,
TRIP,
EFFECTIVE_DT,
LEG,
ORIGIN,
DESTINATION,
DISCONTINUE_DT,
DESTINATION_TIME_ZONE,
ORIGIN_TIME_ZONE,
STD,
STA,
SCHEDULED_TENDER_TM,
SCHEDULED_DELIVERY_TM,
NETWORK,
NO_OF_LEGS,
EQUIPMENT_TYPE,
CTS_NEXT_TRIP,
SERVICE_TYPE,
IN_OUT_INDICATOR )
VALUES (
LVAR_RTE,
LVAR_TRP,
LVAR_EFD,
LVAR_LEG,
LVAR_ORI,
LVAR_DST,
LVAR_DCT,
LVAR_DTZ,
LVAR_OTZ,
LVAR_STD,
LVAR_STA,
LVAR_STT,
LVAR_SDT,
LVAR_NET,
LVAR_NOL,
LVAR_EQT,
LVAR_CNT,
LVAR_STY,
LVAR_IOI );
COMMIT;
END IF;
END LOOP;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK TO SAVEPOINT PERFORM_INSERT;
COMMIT;
END LOADTAB_DAILY_LEG;
/ Received on Fri Aug 09 1996 - 00:00:00 CEST
