svn path=/Customer/trunk/; revision=13682
This commit is contained in:
359
RWSN/rwsn.sql
359
RWSN/rwsn.sql
@@ -1,8 +1,8 @@
|
||||
-- Script containing customer specific configuration sql statements
|
||||
-- for RWSN: Rijkswaterstaat Nederland
|
||||
-- (c) 2008 SG|Facilitor bv
|
||||
-- $Revision: 15 $
|
||||
-- $Modtime: 25-09-08 1:50 $
|
||||
-- $Revision: 16 $
|
||||
-- $Modtime: 26-09-08 12:44 $
|
||||
--
|
||||
-- Support: +31 53 4800700
|
||||
|
||||
@@ -176,13 +176,13 @@ AS
|
||||
-- in het CSV bestand is dus de organisatie eenheid komen te vervallen.
|
||||
CURSOR cafdelingsboom
|
||||
IS
|
||||
SELECT DECODE (LEVEL, 8, 7, 9, 7, 10, 7, 11, 7, LEVEL) niveau, afdelingscode, omschrijving, parentcode,
|
||||
SELECT DECODE (LEVEL, 8, 7, 9, 7, 10, 7, 11, 7, LEVEL) niveau, level, afdelingscode, omschrijving, parentcode,
|
||||
begindatum, einddatum
|
||||
FROM rwsn_imp_idm_org
|
||||
WHERE afdelingscode IS NOT NULL -- geen lege regels
|
||||
CONNECT BY PRIOR afdelingscode = parentcode
|
||||
START WITH parentcode = '00000000'
|
||||
ORDER BY niveau;
|
||||
ORDER BY level;
|
||||
|
||||
CURSOR cverplichtingen (pcafdeling IN NUMBER)
|
||||
IS
|
||||
@@ -196,6 +196,7 @@ AS
|
||||
lkostenplaatskey prs_kostenplaats.prs_kostenplaats_key%TYPE;
|
||||
lafdelingkey NUMBER (10);
|
||||
lparentkey NUMBER (10);
|
||||
lparentcode VARCHAR2 (20);
|
||||
l_oldcountkp NUMBER;
|
||||
l_newcountkp NUMBER;
|
||||
l_oldcountafd NUMBER;
|
||||
@@ -219,7 +220,7 @@ BEGIN
|
||||
p_applrun,
|
||||
'I',
|
||||
'Facilitor IDM_ORG import version ' || currentversion,
|
||||
'$Revision: 15 $'
|
||||
'$Revision: 16 $'
|
||||
);
|
||||
|
||||
-- How many active records are now present?
|
||||
@@ -253,6 +254,29 @@ BEGIN
|
||||
|
||||
FOR rc IN cafdelingsboom
|
||||
LOOP
|
||||
lparentcode := rc.parentcode;
|
||||
|
||||
IF rc.level > 10 THEN
|
||||
SELECT parentcode
|
||||
INTO lparentcode
|
||||
FROM rwsn_imp_idm_org
|
||||
WHERE afdelingscode = lparentcode;
|
||||
END IF;
|
||||
|
||||
IF rc.level > 9 THEN
|
||||
SELECT parentcode
|
||||
INTO lparentcode
|
||||
FROM rwsn_imp_idm_org
|
||||
WHERE afdelingscode = lparentcode;
|
||||
END IF;
|
||||
|
||||
IF rc.level > 8 THEN
|
||||
SELECT parentcode
|
||||
INTO lparentcode
|
||||
FROM rwsn_imp_idm_org
|
||||
WHERE afdelingscode = lparentcode;
|
||||
END IF;
|
||||
|
||||
-- Bestaat de kostenplaats al?
|
||||
BEGIN
|
||||
SELECT prs_kostenplaats_key
|
||||
@@ -312,8 +336,9 @@ BEGIN
|
||||
THEN
|
||||
-- Niveau's lopen van 4.., alle niveaus zitten wel in de cursor voor de bovenstaande kostenplaatsen
|
||||
-- Maar voor de afdelingen pakken we 4 (rootniveau) en hoger
|
||||
-- Afdelingen op niveau 3 worden ook op rootniveau toegevoegd
|
||||
BEGIN
|
||||
IF rc.niveau = 4
|
||||
IF (rc.niveau = 4 OR rc.niveau = 3)
|
||||
THEN
|
||||
INSERT INTO prs_afdeling
|
||||
(prs_afdeling_naam,
|
||||
@@ -325,6 +350,13 @@ BEGIN
|
||||
VALUES (rc.afdelingscode, rc.omschrijving, c_prs_bedrijfkey, NULL, lkostenplaatskey);
|
||||
ELSIF rc.niveau > 4
|
||||
THEN
|
||||
|
||||
SELECT prs_afdeling_key
|
||||
INTO lparentkey
|
||||
FROM prs_afdeling
|
||||
WHERE prs_afdeling_naam = lparentcode
|
||||
AND prs_afdeling_verwijder IS NULL;
|
||||
|
||||
INSERT INTO prs_afdeling
|
||||
(prs_afdeling_naam,
|
||||
prs_afdeling_omschrijving,
|
||||
@@ -332,12 +364,11 @@ BEGIN
|
||||
prs_afdeling_parentkey,
|
||||
prs_kostenplaats_key
|
||||
)
|
||||
SELECT rc.afdelingscode, rc.omschrijving, NULL, prs_afdeling_key, lkostenplaatskey
|
||||
FROM prs_afdeling
|
||||
WHERE prs_afdeling_naam = rc.parentcode;
|
||||
VALUES (rc.afdelingscode, rc.omschrijving, NULL, lparentkey, lkostenplaatskey);
|
||||
|
||||
END IF;
|
||||
|
||||
IF rc.niveau >= 4
|
||||
IF rc.niveau >= 3
|
||||
THEN
|
||||
fac.imp_writelog (p_applname,
|
||||
p_applrun,
|
||||
@@ -352,9 +383,9 @@ BEGIN
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 1000);
|
||||
fac.imp_writelog (p_applname,
|
||||
p_applrun,
|
||||
'W',
|
||||
'E',
|
||||
SUBSTR ('Afdeling kan niet worden toegevoegd ' || oracle_err_mes, 1, 1000),
|
||||
rc.afdelingscode || '/' || rc.omschrijving
|
||||
rc.afdelingscode || '/' || rc.omschrijving || ' (' || lparentcode || ')'
|
||||
);
|
||||
END;
|
||||
END IF;
|
||||
@@ -403,7 +434,7 @@ BEGIN
|
||||
AND prs_kostenplaats_verwijder IS NULL;
|
||||
|
||||
UPDATE prs_afdeling
|
||||
SET prs_afdeling_omschrijving = SUBSTR ('VERVALLLEN: ' || prs_afdeling_omschrijving, 1, 60)
|
||||
SET prs_afdeling_omschrijving = SUBSTR ('VERVALLEN: ' || prs_afdeling_omschrijving, 1, 60)
|
||||
WHERE prs_afdeling_omschrijving NOT LIKE 'VERVALLEN: %'
|
||||
AND NOT EXISTS (SELECT ''
|
||||
FROM rwsn_imp_idm_org
|
||||
@@ -754,7 +785,7 @@ AS
|
||||
idm.bezoekadresplaats, idm.aanduidingnaamgebruik, idm.partnertussenvoegsel, idm.partnernaam
|
||||
FROM rwsn_imp_idm_pers idm, prs_perslid p
|
||||
WHERE idm.personeelsnummer = p.prs_perslid_nr(+) AND idm.einddatum > SYSDATE
|
||||
ORDER BY idm.personeelsnummer, prs_perslid_key DESC;
|
||||
ORDER BY idm.personeelsnummer, prs_perslid_key DESC, idm.einddatum DESC ;
|
||||
|
||||
v_perslid_key NUMBER (10);
|
||||
v_prs_key_cnt NUMBER (10);
|
||||
@@ -954,7 +985,7 @@ AS
|
||||
THEN
|
||||
-- persoon heeft geen werkplek(ken)
|
||||
BEGIN
|
||||
v_errormsg := 'Bepalen verdieping';
|
||||
lv_errormsg := 'Bepalen verdieping';
|
||||
|
||||
SELECT alg_verdieping_key
|
||||
INTO lv_verdieping_key
|
||||
@@ -1026,6 +1057,90 @@ AS
|
||||
VALUES (pkey, lv_werkplek_key, 0);
|
||||
END IF;
|
||||
END;
|
||||
|
||||
PROCEDURE update_adres
|
||||
AS
|
||||
CURSOR cadressen
|
||||
IS
|
||||
SELECT DISTINCT
|
||||
substr(bezoekadresplaats || '-' || bezoekadresnaam,1,30) adres_naam
|
||||
, substr(bezoekadresnaam || ' ' || bezoekadresnummer,1,35) adres_bezoek_adres
|
||||
, substr(bezoekadrespostcode,1,12) adres_bezoek_postcode
|
||||
, substr(bezoekadresplaats, 1, 30) adres_bezoek_plaats
|
||||
FROM rwsn_imp_idm_pers;
|
||||
|
||||
ladreskey NUMBER (10);
|
||||
l_newcount NUMBER;
|
||||
l_impcount NUMBER;
|
||||
v_errormsg VARCHAR (200);
|
||||
oracle_err_mes VARCHAR2 (150);
|
||||
currentversion fac_module.fac_module_version%TYPE;
|
||||
BEGIN
|
||||
SELECT MAX (fac_module_version)
|
||||
INTO currentversion
|
||||
FROM fac_module;
|
||||
|
||||
fac.imp_writelog (p_applname,
|
||||
p_applrun,
|
||||
'I',
|
||||
'Facilitor idm_adres import version ' || currentversion,
|
||||
'$Revision: 16 $'
|
||||
);
|
||||
|
||||
-- How many active records are imported?
|
||||
SELECT COUNT (*)
|
||||
INTO l_impcount
|
||||
FROM fac_imp_adres;
|
||||
|
||||
FOR rc IN cadressen
|
||||
LOOP
|
||||
-- Bestaat deze al?
|
||||
-- Er is geen key, dus checken we op alle velden
|
||||
-- Een update is dus nvt
|
||||
BEGIN
|
||||
SELECT mld_adres_key
|
||||
INTO ladreskey
|
||||
FROM mld_adres
|
||||
WHERE mld_adres_naam = rc.adres_naam
|
||||
AND mld_adres_bezoek_postcode = rc.adres_bezoek_postcode
|
||||
AND mld_adres_bezoek_adres = rc.adres_bezoek_adres
|
||||
AND mld_adres_bezoek_plaats = rc.adres_bezoek_plaats;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
ladreskey := -1;
|
||||
END;
|
||||
|
||||
DBMS_OUTPUT.put_line (rc.adres_naam);
|
||||
|
||||
IF ladreskey = -1
|
||||
THEN
|
||||
INSERT INTO mld_adres
|
||||
(mld_adres_naam,
|
||||
mld_adres_bezoek_adres,
|
||||
mld_adres_bezoek_postcode,
|
||||
mld_adres_bezoek_plaats,
|
||||
mld_adres_afleveradres
|
||||
)
|
||||
VALUES (rc.adres_naam, rc.adres_bezoek_adres, rc.adres_bezoek_postcode, rc.adres_bezoek_plaats, 1);
|
||||
|
||||
fac.imp_writelog (p_applname, p_applrun, 'I', 'Adres is toegevoegd', rc.adres_naam);
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
-- Zoek de locatiekey bij het adres op basis van postcode
|
||||
-- Als er meerdere locaties matchen pak ik de oudste (=grootste?)
|
||||
UPDATE mld_adres
|
||||
SET alg_locatie_key =
|
||||
(SELECT MIN (l.alg_locatie_key)
|
||||
FROM alg_locatie l
|
||||
WHERE l.alg_locatie_postcode = mld_adres_bezoek_postcode
|
||||
AND l.alg_locatie_verwijder IS NULL)
|
||||
WHERE mld_adres_verwijder IS NULL AND alg_locatie_key IS NULL;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
----------------------
|
||||
----------------------
|
||||
----------------------
|
||||
@@ -1050,7 +1165,7 @@ BEGIN
|
||||
p_applrun,
|
||||
'I',
|
||||
'Facilitor IDM_PERS import version ' || currentversion,
|
||||
'$Revision: 15 $'
|
||||
'$Revision: 16 $'
|
||||
);
|
||||
|
||||
-- -- #Import
|
||||
@@ -1061,7 +1176,7 @@ BEGIN
|
||||
-- Informatieve logging, zien we gelijk hoe laat het was
|
||||
fac.imp_writelog (p_applname, p_applrun, 'S', 'Aantal ingelezen personen: ' || TO_CHAR (v_perslid_count_imp), '');
|
||||
|
||||
-- #Actieve personen mè² personeelsnummer
|
||||
-- #Actieve personen mèt personeelsnummer
|
||||
SELECT COUNT (*)
|
||||
INTO v_perslid_count_fclt
|
||||
FROM prs_perslid
|
||||
@@ -1074,6 +1189,8 @@ BEGIN
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
update_adres ();
|
||||
|
||||
-- Begin met het ontmantelen van vervallen personen
|
||||
FOR rec_prs_del IN c_prs_del
|
||||
LOOP
|
||||
@@ -1171,7 +1288,8 @@ BEGIN
|
||||
v_afdeling_key := 0;
|
||||
v_srtperslid_key := 0;
|
||||
v_perslid_key := 0;
|
||||
|
||||
v_errormsg := 'Fout bij bepalen randvoorwaarden';
|
||||
|
||||
-- *** Controle verplichte gegevens + ophalen extra informatie ***
|
||||
-- Controle: PRS_PERSLID_NR
|
||||
IF rec_prs_upd.prs_perslid_nr IS NULL
|
||||
@@ -1429,21 +1547,26 @@ BEGIN
|
||||
prs_srtperslid_key = v_srtperslid_key,
|
||||
prs_afdeling_key = v_afdeling_key,
|
||||
prs_perslid_verwijder = NULL,
|
||||
prs_perslid_oslogin = rec_prs_upd.loginnaam,
|
||||
prs_perslid_oslogin = llogin,
|
||||
prs_perslid_mobiel = rec_prs_upd.mobielnummer,
|
||||
prs_perslid_email = rec_prs_upd.email,
|
||||
prs_perslid_email = lemail,
|
||||
prs_perslid_ingangsdatum = rec_prs_upd.begindatum,
|
||||
prs_perslid_einddatum = rec_prs_upd.einddatum
|
||||
WHERE prs_perslid_nr = rec_prs_upd.prs_perslid_nr
|
||||
AND prs_perslid_key = rec_prs_upd.prs_perslid_key
|
||||
AND ( prs_perslid_naam <> rec_prs_upd.prs_perslid_naam
|
||||
OR NVL (prs_perslid_tussenvoegsel, '-') <> NVL (rec_prs_upd.prs_perslid_tussenvoegsel, '-')
|
||||
OR prs_perslid_voorletters <> rec_prs_upd.prs_perslid_voorletters
|
||||
OR NVL (prs_perslid_voorletters, '-') <> NVL (rec_prs_upd.prs_perslid_voorletters, '-')
|
||||
OR NVL (prs_perslid_voornaam, '-') <> NVL (rec_prs_upd.prs_perslid_voornaam, '-')
|
||||
OR NVL (prs_perslid_telefoonnr, '-') <> NVL (rec_prs_upd.prs_perslid_telefoonnr, '-')
|
||||
OR prs_perslid_titel <> rec_prs_upd.prs_perslid_titel
|
||||
OR NVL (prs_perslid_titel, '-') <> NVL (rec_prs_upd.prs_perslid_titel, '-')
|
||||
OR prs_srtperslid_key <> v_srtperslid_key
|
||||
OR prs_afdeling_key <> v_afdeling_key
|
||||
OR NVL (prs_perslid_oslogin, '-') <> NVL (llogin, '-')
|
||||
OR NVL (prs_perslid_mobiel, '-') <> NVL (rec_prs_upd.mobielnummer, '-')
|
||||
OR NVL (prs_perslid_email, '-') <> NVL (lemail, '-')
|
||||
OR NVL (prs_perslid_ingangsdatum, to_date('01012000', 'ddmmyyyy')) <> NVL (rec_prs_upd.begindatum, to_date('01012000', 'ddmmyyyy'))
|
||||
OR NVL (prs_perslid_einddatum, to_date('01012000', 'ddmmyyyy')) <> NVL (rec_prs_upd.einddatum, to_date('01012000', 'ddmmyyyy'))
|
||||
OR rec_prs_upd.prs_perslid_verwijder IS NOT NULL
|
||||
);
|
||||
|
||||
@@ -1454,7 +1577,7 @@ BEGIN
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg := oracle_err_mes;
|
||||
v_errormsg := v_errormsg || ' - ' || oracle_err_mes;
|
||||
v_errorhint := 'Persoon: ' || rec_prs_upd.prs_perslid_nr;
|
||||
v_update := FALSE;
|
||||
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, v_errorhint);
|
||||
@@ -1470,8 +1593,11 @@ BEGIN
|
||||
|
||||
IF v_update
|
||||
THEN
|
||||
v_newgebouwkey := getgebouwkey (rec_prs_upd.bezoekadrespostcode, rec_prs_upd.bezoekadresnummer);
|
||||
handle_location (v_perslid_key, v_newgebouwkey);
|
||||
IF rec_prs_upd.bezoekadrespostcode IS NOT NULL
|
||||
THEN
|
||||
v_newgebouwkey := getgebouwkey (rec_prs_upd.bezoekadrespostcode, rec_prs_upd.bezoekadresnummer);
|
||||
handle_location (v_perslid_key, v_newgebouwkey);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF v_update
|
||||
@@ -1533,189 +1659,6 @@ END;
|
||||
/
|
||||
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- IMPORTFUNCTIES - IDM_ADRES
|
||||
-------------------------------------------------------------------------------
|
||||
-- RWSN specifieke import van locaties om personen vanuit IDM te kunnen mappen
|
||||
-- op een plaats. Er wordt gebruik gemaakt van de standaard FAC_IMP_ADRES tabel,
|
||||
-- die ruimer is dan RWSN_IMP_ADRES zou zijn en voldoet dus.
|
||||
--
|
||||
/* Formatted on 12/09/2008 12:47 (Formatter Plus v4.8.7) */
|
||||
CREATE OR REPLACE PROCEDURE rwsn_import_idm_adres (
|
||||
p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_filedir IN VARCHAR2,
|
||||
p_filename IN VARCHAR2
|
||||
)
|
||||
AS
|
||||
CURSOR c_cursor
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_imp_file_applicatie = p_applname
|
||||
ORDER BY fac_imp_file_index;
|
||||
|
||||
v_newline VARCHAR2 (1000); -- Import line
|
||||
v_field VARCHAR2 (100); -- Import field
|
||||
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
||||
v_errormsg VARCHAR (200);
|
||||
v_errorhint VARCHAR (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_skipfield VARCHAR2 (100);
|
||||
-- De importvelden
|
||||
v_location_guid VARCHAR2 (100);
|
||||
v_visitaddress VARCHAR2 (100);
|
||||
v_visitnumber VARCHAR2 (100);
|
||||
v_visitpostalcode VARCHAR2 (100);
|
||||
v_visitplace VARCHAR2 (100);
|
||||
header_found BOOLEAN;
|
||||
v_controle_res VARCHAR2 (30);
|
||||
BEGIN
|
||||
-- Eerst opruiming
|
||||
DELETE FROM imp_log
|
||||
WHERE imp_log_applicatie = p_applname;
|
||||
|
||||
-- Init
|
||||
header_found := FALSE;
|
||||
v_fielddelimitor := ';';
|
||||
|
||||
-- Clear my previous imported rows
|
||||
-- DELETE FROM rwsn_imp_idm_adres;
|
||||
DELETE FROM fac_imp_adres;
|
||||
|
||||
FOR rec1 IN c_cursor
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_location_guid);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_visitaddress);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_visitnumber);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_visitpostalcode);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_visitplace);
|
||||
|
||||
-- Skip until a valid header is found
|
||||
IF (v_location_guid = '"Location_GUID"' AND v_visitplace = '"VisitPlace"')
|
||||
THEN
|
||||
-- Sla de kopregel over.
|
||||
header_found := TRUE;
|
||||
ELSIF (header_found)
|
||||
THEN
|
||||
INSERT INTO fac_imp_adres
|
||||
(adres_naam, adres_bezoek_adres, adres_bezoek_postcode, adres_bezoek_plaats)
|
||||
VALUES (SUBSTR (v_visitaddress, 1, 30),
|
||||
SUBSTR (v_visitaddress || ' ' || v_visitnumber, 1, 35),
|
||||
SUBSTR (v_visitpostalcode, 1, 12),
|
||||
SUBSTR (v_visitplace, 1, 30)
|
||||
);
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
IF NOT header_found
|
||||
THEN
|
||||
fac.imp_writelog (p_applname,
|
||||
p_applrun,
|
||||
'E',
|
||||
'Geen geldige header aangetroffen',
|
||||
'Bestand ' || p_filename || ' is geen geldig IDM_ADRES importbestand.'
|
||||
);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_applname, p_applrun, 'E', SUBSTR (v_errormsg, 1, 1000), '');
|
||||
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
|
||||
DELETE FROM fac_imp_adres;
|
||||
END;
|
||||
/
|
||||
|
||||
/* Formatted on 12/09/2008 13:04 (Formatter Plus v4.8.7) */
|
||||
CREATE OR REPLACE PROCEDURE rwsn_update_idm_adres (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
||||
AS
|
||||
CURSOR cadressen
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_adres;
|
||||
|
||||
ladreskey NUMBER (10);
|
||||
l_newcount NUMBER;
|
||||
l_impcount NUMBER;
|
||||
v_errormsg VARCHAR (200);
|
||||
oracle_err_mes VARCHAR2 (150);
|
||||
currentversion fac_module.fac_module_version%TYPE;
|
||||
BEGIN
|
||||
SELECT MAX (fac_module_version)
|
||||
INTO currentversion
|
||||
FROM fac_module;
|
||||
|
||||
fac.imp_writelog (p_applname,
|
||||
p_applrun,
|
||||
'I',
|
||||
'Facilitor idm_adres import version ' || currentversion,
|
||||
'$Revision: 15 $'
|
||||
);
|
||||
|
||||
-- How many active records are imported?
|
||||
SELECT COUNT (*)
|
||||
INTO l_impcount
|
||||
FROM fac_imp_adres;
|
||||
|
||||
FOR rc IN cadressen
|
||||
LOOP
|
||||
-- Bestaat deze al?
|
||||
-- Er is geen key, dus checken we op alle velden
|
||||
-- Een update is dus nvt
|
||||
BEGIN
|
||||
SELECT mld_adres_key
|
||||
INTO ladreskey
|
||||
FROM mld_adres
|
||||
WHERE mld_adres_naam = rc.adres_naam
|
||||
AND mld_adres_bezoek_postcode = rc.adres_bezoek_postcode
|
||||
AND mld_adres_bezoek_adres = rc.adres_bezoek_adres
|
||||
AND mld_adres_bezoek_plaats = rc.adres_bezoek_plaats;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
ladreskey := -1;
|
||||
END;
|
||||
|
||||
DBMS_OUTPUT.put_line (rc.adres_naam);
|
||||
|
||||
IF ladreskey = -1
|
||||
THEN
|
||||
INSERT INTO mld_adres
|
||||
(mld_adres_naam,
|
||||
mld_adres_bezoek_adres,
|
||||
mld_adres_bezoek_postcode,
|
||||
mld_adres_bezoek_plaats,
|
||||
mld_adres_afleveradres
|
||||
)
|
||||
VALUES (rc.adres_naam, rc.adres_bezoek_adres, rc.adres_bezoek_postcode, rc.adres_bezoek_plaats, 1);
|
||||
|
||||
fac.imp_writelog (p_applname, p_applrun, 'I', 'Adres is toegevoegd', rc.adres_naam);
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
-- Zoek de locatiekey bij het adres op basis van postcode
|
||||
-- Als er meerdere locaties matchen pak ik de oudste (=grootste?)
|
||||
UPDATE mld_adres
|
||||
SET alg_locatie_key =
|
||||
(SELECT MIN (l.alg_locatie_key)
|
||||
FROM alg_locatie l
|
||||
WHERE l.alg_locatie_postcode = mld_adres_bezoek_postcode AND l.alg_locatie_verwijder IS NULL)
|
||||
WHERE mld_adres_verwijder IS NULL AND alg_locatie_key IS NULL;
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
--=============================================================================
|
||||
-- EXPORTFUNCTIES
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user