PROCEDURE delete_route_download_bol (device_id_in VARCHAR2,
bol_id_in INTEGER)
AS
TYPE t_rowids
IS
TABLE OF ROWID
INDEX BY PLS_INTEGER;
v_rowids t_rowids;
TYPE t_routedownload IS TABLE OF tms.tms_route_download%ROWTYPE;
download_rec t_routedownload:=new t_routedownload(null,null,null,null,null,null);
BEGIN
SELECT ROWID
BULK COLLECT
INTO v_rowids
FROM ( SELECT ROWID
FROM tms.tms_route_download trd
WHERE UPPER (device_id_in) LIKE 'DEV%'
AND device_id = device_id_in
AND EXISTS
(SELECT 1
FROM tms_route_header rh
WHERE rh.truck_route_instance_id =
trd.truck_route_instance_id
AND rh.bill_of_lading_id = bol_id_in)
);
FORALL i IN 1 .. v_rowids.COUNT
DELETE FROM tms.tms_route_download
WHERE ROWID = v_rowids (i)
RETURNING truck_route_instance_id,
device_id,
download_date,
bill_of_lading_id,
driver_name,
confirm_date
BULK COLLECT INTO download_rec;
IF download_rec.COUNT > 0
THEN
FOR i IN 1 .. download_rec.COUNT
LOOP
IF download_rec (i).download_date IS NOT NULL
THEN
INSERT INTO tms.tms_handheld_log (device_id,
msg_dt,
severity,
category,
msg_text,
svr_dt,
log_id)
VALUES (download_rec (i).device_id,
download_rec (i).download_date,
6,
'TESTDOWNLOAD',
download_rec (i).truck_route_instance_id,
SYSDATE,
tms_handheld_seq.NEXTVAL);
END IF;
END LOOP;
ELSE
DBMS_OUTPUT.put_line ('There is no history be deleted.');
RETURN;
END IF;
DBMS_OUTPUT.put_line ('Data be updated successfully.');
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line ('No data be updated.');
END;