Files
Customer/CONN/Once/conn#656.sql
2006-04-03 11:51:36 +00:00

408 lines
12 KiB
MySQL
Raw Blame History

CREATE OR REPLACE PACKAGE CONN_HALTES AS
FUNCTION get_halte_key
(p_haltecode IN VARCHAR2
,p_kenmerk_key IN NUMBER
) return NUMBER;
FUNCTION verwerk_halte
(p_HALTECODE IN VARCHAR2
,p_HALTENAAM IN VARCHAR2
,p_PLAATSNAAM IN VARCHAR2
,p_PLACECODE IN VARCHAR2
,p_ZONE IN VARCHAR2
,p_X_COORDINAAT IN VARCHAR2
,p_Y_COORDINAAT IN VARCHAR2
,p_LIJNNUMMER IN VARCHAR2
) return NUMBER;
END CONN_HALTES;
/
CREATE OR REPLACE PACKAGE BODY CONN_HALTES AS
FUNCTION get_halte_key
(p_haltecode IN VARCHAR2
,p_kenmerk_key IN NUMBER
) return NUMBER
IS
v_result NUMBER(10);
v_count NUMBER(10);
BEGIN
-- Init
v_result := 0;
select count(*)
into v_count
from ins_deel
where ins_deel_verwijder is null
and substr(ins_deel_omschrijving,2,8) = p_haltecode;
IF (v_count = 1) THEN
select ins_deel_key
into v_result
from ins_deel
where ins_deel_verwijder is null
and substr(ins_deel_omschrijving,2,8) = p_haltecode;
ELSE
select count(*)
into v_count
FROM ins_deel d, ins_kenmerkdeel kd
WHERE d.ins_deel_key = kd.ins_deel_key
AND kd.ins_kenmerk_key = p_kenmerk_key
AND kd.ins_kenmerkdeel_waarde = p_haltecode
AND ins_kenmerkdeel_verwijder is null;
IF (v_count = 1) THEN
select d.ins_deel_key
into v_result
FROM ins_deel d, ins_kenmerkdeel kd
WHERE d.ins_deel_key = kd.ins_deel_key
AND kd.ins_kenmerk_key = p_kenmerk_key
AND kd.ins_kenmerkdeel_waarde = p_haltecode
AND ins_kenmerkdeel_verwijder is null;
END IF;
END IF;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN -1;
END get_halte_key;
FUNCTION verwerk_halte
(p_HALTECODE IN VARCHAR2
,p_HALTENAAM IN VARCHAR2
,p_PLAATSNAAM IN VARCHAR2
,p_PLACECODE IN VARCHAR2
,p_ZONE IN VARCHAR2
,p_X_COORDINAAT IN VARCHAR2
,p_Y_COORDINAAT IN VARCHAR2
,p_LIJNNUMMER IN VARCHAR2
) return NUMBER
IS
v_DEEL_OMSCHRIJVING VARCHAR2(30);
v_HALTENAAM VARCHAR2(40);
v_HALTECODE VARCHAR2(8);
v_PLAATSNAAM VARCHAR2(30);
v_PLACECODE VARCHAR2(10);
v_ZONE VARCHAR2(10);
v_X_COORDINAAT VARCHAR2(10);
v_Y_COORDINAAT VARCHAR2(10);
v_LIJNNUMMER VARCHAR2(200);
ORACLE_err_num NUMBER;
ORACLE_err_mes VARCHAR2(100);
v_result NUMBER(10);
v_errormsg VARCHAR2(1000);
v_import_row VARCHAR2(1000);
v_count NUMBER(10);
v_terreinsector_key NUMBER(10);
v_ins_deel_key NUMBER(10);
c_error_result NUMBER(10) := -1;
-- Constanten: diversen
c_srtdeel_key INTEGER := 43401; -- Halte
c_srtdeel_module VARCHAR2 (3) := 'INS';
c_locatie_key_onbekend INTEGER := 3123;
c_ruimte_type VARCHAR2 (1) := 'T';
c_halte_prefix VARCHAR2 (1) := 'H';
-- Constanten: kenmerken key's
c_halte_code INTEGER := 501;
c_zone_kenmerk_key INTEGER := 503;
c_place_kenmerk_key INTEGER := 541;
c_plaatsnaam_kenmerk_key INTEGER := 502;
c_haltenaam_kenmerk_key INTEGER := 504;
c_xcoordinaat_kenmerk_key INTEGER := 505;
c_ycoordinaat_kenmerk_key INTEGER := 506;
c_Lijnnummer1_kenmerk_key INTEGER := 601;
BEGIN
-- INIT
v_result := c_error_result;
v_errormsg := 'INIT';
v_import_row := p_HALTECODE||'|'||p_HALTENAAM||'|'||p_PLAATSNAAM||'|'||p_PLACECODE||'|'||p_ZONE||'|'||p_X_COORDINAAT||'|'||p_Y_COORDINAAT||'|'||p_LIJNNUMMER;
v_HALTENAAM := substr(p_HALTENAAM,1,40);
v_HALTECODE := substr(p_HALTECODE,1,8);
v_PLAATSNAAM := substr(p_PLAATSNAAM,1,30);
v_PLACECODE := substr(p_PLACECODE,1,10);
v_ZONE := substr(p_ZONE,1,4);
v_X_COORDINAAT := substr(p_X_COORDINAAT,1,6);
v_Y_COORDINAAT := substr(p_Y_COORDINAAT,1,6);
v_LIJNNUMMER := substr(p_LIJNNUMMER,1,200);
v_DEEL_OMSCHRIJVING := substr(c_halte_prefix||v_HALTECODE||' '||v_HALTENAAM,1,30);
-- alg_terrein
v_errormsg := '-- Terrein zoeken';
select count(*)
into v_count
from alg_terreinsector
where alg_terreinsector_verwijder is null
and alg_terreinsector_upper = upper(substr(v_PLAATSNAAM,1,10))
and alg_locatie_key = c_locatie_key_onbekend;
IF (v_count = 0) THEN
v_errormsg := '-- alg_terrein toevoegen ';
INSERT INTO alg_terreinsector
(alg_locatie_key
,alg_terreinsector_code
,alg_terreinsector_naam)
VALUES
(c_locatie_key_onbekend
,SUBSTR(v_PLAATSNAAM,1,10)
,SUBSTR(v_PLAATSNAAM,1,30));
END IF;
v_errormsg := '-- Terrein zoeken(2) ';
select alg_terreinsector_key
into v_terreinsector_key
from alg_terreinsector
where alg_terreinsector_verwijder is null
and alg_terreinsector_upper = upper(substr(v_PLAATSNAAM,1,10));
select get_halte_key(v_HALTECODE,c_halte_code)
into v_ins_deel_key
from dual;
IF (v_ins_deel_key <= 0) THEN
SELECT ins_s_ins_inst_keys.NEXTVAL
INTO v_ins_deel_key
FROM DUAL;
v_errormsg := '-- Toevoegen halte ';
insert into INS_DEEL
(ins_deel_key
,ins_srtdeel_key
,ins_deel_module
,ins_alg_ruimte_key
,ins_alg_ruimte_type
,ins_deel_omschrijving)
values
(v_ins_deel_key
,c_srtdeel_key
,c_srtdeel_module
,v_terreinsector_key
,c_ruimte_type
,v_DEEL_OMSCHRIJVING);
ELSE
update ins_deel
set ins_deel_omschrijving = v_DEEL_OMSCHRIJVING
where ins_deel_key = v_ins_deel_key;
END IF;
v_result := v_ins_deel_key;
v_errormsg := '-- Verwijder eventueel bestaande flexibele kenmerken die relevant zijn voor de koppeling';
DELETE
FROM ins_kenmerkdeel
WHERE ins_deel_key = v_ins_deel_key
AND ins_kenmerk_key in (c_halte_code,c_zone_kenmerk_key,c_place_kenmerk_key,c_plaatsnaam_kenmerk_key,c_haltenaam_kenmerk_key,c_xcoordinaat_kenmerk_key,c_ycoordinaat_kenmerk_key,c_Lijnnummer1_kenmerk_key);
-- c_halte_code
v_errormsg := '--C-- flexprops Halte code toevoegen';
IF v_HALTECODE IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_Halte_code
, v_ins_deel_key
, substr(v_HALTECODE,1,8));
END IF;
-- c_zone_kenmerk_key
v_errormsg := '--N-- flexprops Zone toevoegen';
IF v_ZONE IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_zone_kenmerk_key
, v_ins_deel_key
, v_ZONE);
END IF;
-- c_place_kenmerk_key
v_errormsg := '--C-- flexprops Placecode toevoegen';
IF v_PLACECODE IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_place_kenmerk_key
, v_ins_deel_key
, v_PLACECODE);
END IF;
-- c_plaatsnaam_kenmerk_key
v_errormsg := '--C-- flexprops Plaatsnaam toevoegen';
IF v_PLAATSNAAM IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_plaatsnaam_kenmerk_key
, v_ins_deel_key
, v_PLAATSNAAM);
END IF;
-- c_haltenaam_kenmerk_key
v_errormsg := '--N-- flexprops Haltenaam toevoegen';
IF v_HALTENAAM IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_haltenaam_kenmerk_key
, v_ins_deel_key
, v_HALTENAAM);
END IF;
-- c_xcoordinaat_kenmerk_key
v_errormsg := '--N-- flexprops X co<63>rdinaten toevoegen';
IF v_X_COORDINAAT IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_xcoordinaat_kenmerk_key
, v_ins_deel_key
, v_X_COORDINAAT);
END IF;
-- c_ycoordinaat_kenmerk_key
v_errormsg := '--N-- flexprops Y co<63>rdinaten toevoegen';
IF v_Y_COORDINAAT IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_ycoordinaat_kenmerk_key
, v_ins_deel_key
, v_Y_COORDINAAT);
END IF;
-- c_Lijnnummer1_kenmerk_key
v_errormsg := '--N-- flexprops passerende lijnen toevoegen';
IF v_LIJNNUMMER IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(c_Lijnnummer1_kenmerk_key
, v_ins_deel_key
, v_LIJNNUMMER);
END IF;
v_errormsg := 'Verwijderen rapportage meldingen ouder dan 30 dagen';
DELETE FROM imp_log WHERE imp_log_applicatie = 'VERWERK_HALTE' AND imp_log_datum + 30 < SYSDATE;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'(ORACLE error ' || to_char(oracle_err_num) || '/' || oracle_err_mes
|| ')';
fac.imp_writelog ('VERWERK_HALTE',
'PACKAGE CONN_HALTES',
'E',
v_errormsg,
v_import_row
);
RETURN c_error_result;
END verwerk_halte;
END CONN_HALTES;
/
CREATE OR REPLACE TRIGGER conn_t_oac_stg_haltes_B_IU
BEFORE INSERT OR UPDATE ON oac_stg_haltes
FOR EACH ROW
BEGIN
IF CONN_HALTES.verwerk_halte(:new.HALTE_CODE,:new.HALTENAAM_KORT,:new.PLACE_CODE,:new.PLAATSNAAM,:new.ZONE_CODE,to_char(:new.LOKATIECODE_X),to_char(:new.LOKATIECODE_Y),:new.PASSERENDE_LIJNEN) > -1 THEN
:new.HALTE_CODE := :new.HALTE_CODE; -- dummy
ELSE
:new.HALTE_CODE := :new.HALTE_CODE; -- dummy
END IF;
END;
/
INSERT INTO FAC_USRRAP ( FAC_USRRAP_OMSCHRIJVING, FAC_USRRAP_VIEW_NAME,
FAC_USRRAP_IN_HUIDIGE_LOCATIE, FAC_USRRAP_TEMPLATE, FAC_USRRAP_MACRO, FAC_USRRAP_VRAAGBEGINDATUM,
FAC_USRRAP_VRAAGEINDDATUM, FAC_USRRAP_FUNCTIE, FAC_USRRAP_INFO, FAC_FUNCTIE_KEY,
FAC_USRRAP_AUTOREFRESH ) VALUES (
'Haltes die niet zijn toegevoegd of gewijzigd', 'conn_v_rap_chalte_import', NULL, NULL, NULL
, 0, 0, 0, '', 30, 0);
CREATE OR REPLACE VIEW conn_v_rap_chalte_import AS
SELECT imp_log_omschrijving melding, TO_CHAR(imp_log_datum,'DD-MM-YYYY') datum_import, imp_log_hint importregel
FROM imp_log
ORDER BY imp_log_datum DESC;
commit;