From 9e823ec547916c851cc5d7cd5cef149491097ad1 Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Tue, 9 Jul 2013 16:02:56 +0000 Subject: [PATCH] CONN#26766 Import locatiegegevens svn path=/Customer/trunk/; revision=18415 --- CONN/conn.sql | 1689 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1685 insertions(+), 4 deletions(-) diff --git a/CONN/conn.sql b/CONN/conn.sql index 415e91ea8..ce94fb072 100644 --- a/CONN/conn.sql +++ b/CONN/conn.sql @@ -12322,6 +12322,1690 @@ EXCEPTION END conn_update_srtdeel_swap; / +/* Formatted on 9-7-2013 17:18:18 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW conn_v_locatiekenmerken +AS +SELECT fac.safe_to_number (SUBSTR (x.kenmerk_id, 4)) alg_kenmerk_key, + x.vnr, + kw.alg_onrgoed_key, + kw.waarde + FROM ( SELECT SUBSTR ('000' || TO_CHAR (k1.alg_kenmerk_volgnr), -3) + || TO_CHAR (k1.alg_kenmerk_key) + kenmerk_id, + COUNT ( * ) vnr + FROM (SELECT * + FROM alg_kenmerk + WHERE alg_kenmerk_verwijder IS NULL + AND alg_kenmerk_niveau = 'L' + AND alg_kenmerk_kenmerktype IN + ('C', 'D', 'N', 'R', 'S')) k1, + (SELECT * + FROM alg_kenmerk + WHERE alg_kenmerk_verwijder IS NULL + AND alg_kenmerk_niveau = 'L' + AND alg_kenmerk_kenmerktype IN + ('C', 'D', 'N', 'R', 'S')) k2 + WHERE SUBSTR ('000' || TO_CHAR (k1.alg_kenmerk_volgnr), -3) + || TO_CHAR (k1.alg_kenmerk_key) >= + SUBSTR ('000' || TO_CHAR (k2.alg_kenmerk_volgnr), + -3) + || TO_CHAR (k2.alg_kenmerk_key) + GROUP BY SUBSTR ('000' || TO_CHAR (k1.alg_kenmerk_volgnr), -3) + || TO_CHAR (k1.alg_kenmerk_key)) x + LEFT JOIN + (SELECT ok.alg_onrgoed_key, + ok.alg_kenmerk_key, + DECODE ( + k.alg_kenmerk_kenmerktype, + 'R', + fac.getdomeinwaarde (k.fac_kenmerkdomein_key, + ok.alg_onrgoedkenmerk_waarde), + 'S', + fac.getdomeinwaarde (k.fac_kenmerkdomein_key, + ok.alg_onrgoedkenmerk_waarde), + ok.alg_onrgoedkenmerk_waarde + ) + waarde + FROM alg_kenmerk k, alg_v_aanwezigonrgoedkenmerk ok + WHERE k.alg_kenmerk_verwijder IS NULL + AND k.alg_kenmerk_niveau = 'L' + AND k.alg_kenmerk_kenmerktype IN + ('C', 'D', 'N', 'R', 'S') + AND k.alg_kenmerk_key = ok.alg_kenmerk_key) kw + ON fac.safe_to_number (SUBSTR (x.kenmerk_id, 4)) = + kw.alg_kenmerk_key; + +/* Formatted on 9-7-2013 17:40:04 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW conn_v_rap_onrgoed1_expimp +( + hide_f_result_order, + fclt_f_regio_omschrijving, + fclt_f_district_omschrijving, + fclt_f_locatie_code, + locatieomschrijving, + fclt_f_gebouwcode, + gebouwomschrijving, + fclt_f_gebouwfunctie, + contactpersoon, + telefoonnummer, + bezoekadres, + postcode1, + plaats1, + land1, + postadres, + postcode2, + plaats2, + land2, + kenmerk1, + kenmerk2, + kenmerk3, + kenmerk4, + kenmerk5, + kenmerk6, + kenmerk7, + kenmerk8, + kenmerk9, + kenmerk10 +) +AS + SELECT 0, + 'regio_omschrijving' regio_omschrijving, + 'district_omschrijving' district_omschrijving, + 'locatie_code' locatie_code, + 'locatieomschrijving' locatieomschrijving, + 'gebouwcode' gebouwcode, + 'gebouwomschrijving' gebouwomschrijving, + 'gebouwfunctie' gebouwfunctie, + 'contactpersoon' contactpersoon, + 'telefoonnummer' telefoonnummer, + 'bezoekadres' bezoekadres, + 'postcode1' postcode1, + 'plaats1' plaats1, + 'land1' land1, + 'postadres' postadres, + 'postcode2' postcode2, + 'plaats2' plaats2, + 'land2' land2, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 1)) + kenmerk1, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 2)) + kenmerk2, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 3)) + kenmerk3, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 4)) + kenmerk4, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 5)) + kenmerk5, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 6)) + kenmerk6, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 7)) + kenmerk7, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 8)) + kenmerk8, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 9)) + kenmerk9, + TO_CHAR ( (SELECT MAX (alg_kenmerk_key) + FROM conn_v_locatiekenmerken + WHERE vnr = 10)) + kenmerk10 + FROM DUAL + UNION ALL + SELECT 1, + x.alg_regio_omschrijving regio_omschrijving, + x.alg_district_omschrijving district_omschrijving, + x.alg_locatie_code locatie_code, + x.alg_locatie_omschrijving locatieomschrijving, + x.alg_gebouw_code gebouwcode, + x.alg_gebouw_naam gebouwomschrijving, + x.alg_srtgebouw_omschrijving gebouwfunctie, + x.alg_locatie_verantw contactpersoon, + x.alg_locatie_verantw_tel telefoonnummer, + x.alg_locatie_adres bezoekadres, + x.alg_locatie_postcode postcode1, + x.alg_locatie_plaats plaats1, + x.alg_locatie_land land1, + x.alg_locatie_post_adres postadres, + x.alg_locatie_post_postcode postcode2, + x.alg_locatie_post_plaats plaats2, + x.alg_locatie_post_land land2, + k1.waarde kenmerk1, + k2.waarde kenmerk2, + k3.waarde kenmerk3, + k4.waarde kenmerk4, + k5.waarde kenmerk5, + k6.waarde kenmerk6, + k7.waarde kenmerk7, + k8.waarde kenmerk8, + k9.waarde kenmerk9, + k10.waarde kenmerk10 + FROM (SELECT l.alg_locatie_key, + r.alg_regio_omschrijving, + d.alg_district_omschrijving, + l.alg_locatie_code, + l.alg_locatie_omschrijving, + g.alg_gebouw_code, + g.alg_gebouw_naam, + sg.alg_srtgebouw_omschrijving, + l.alg_locatie_verantw, + l.alg_locatie_verantw_tel, + l.alg_locatie_adres, + l.alg_locatie_postcode, + l.alg_locatie_plaats, + l.alg_locatie_land, + l.alg_locatie_post_adres, + l.alg_locatie_post_postcode, + l.alg_locatie_post_plaats, + l.alg_locatie_post_land + FROM alg_v_aanwezigregio r, + alg_v_aanwezigdistrict d, + alg_v_aanweziglocatie l, + alg_v_aanweziggebouw g, + alg_v_aanwezigsrtgebouw sg + WHERE r.alg_regio_key = + d.alg_regio_key + AND d.alg_district_key = + l.alg_district_key + AND l.alg_locatie_key = + g.alg_locatie_key + AND g.alg_srtgebouw_key = + sg.alg_srtgebouw_key(+)) + x + LEFT JOIN + conn_v_locatiekenmerken k1 + ON x.alg_locatie_key = + k1.alg_onrgoed_key + AND k1.vnr = 1 + LEFT JOIN + conn_v_locatiekenmerken k2 + ON x.alg_locatie_key = k2.alg_onrgoed_key + AND k1.vnr = 2 + LEFT JOIN + conn_v_locatiekenmerken k3 + ON x.alg_locatie_key = k3.alg_onrgoed_key + AND k1.vnr = 3 + LEFT JOIN + conn_v_locatiekenmerken k4 + ON x.alg_locatie_key = k4.alg_onrgoed_key + AND k1.vnr = 4 + LEFT JOIN + conn_v_locatiekenmerken k5 + ON x.alg_locatie_key = k5.alg_onrgoed_key + AND k1.vnr = 5 + LEFT JOIN + conn_v_locatiekenmerken k6 + ON x.alg_locatie_key = k6.alg_onrgoed_key + AND k1.vnr = 6 + LEFT JOIN + conn_v_locatiekenmerken k7 + ON x.alg_locatie_key = k7.alg_onrgoed_key AND k1.vnr = 7 + LEFT JOIN + conn_v_locatiekenmerken k8 + ON x.alg_locatie_key = k8.alg_onrgoed_key AND k1.vnr = 8 + LEFT JOIN + conn_v_locatiekenmerken k9 + ON x.alg_locatie_key = k9.alg_onrgoed_key AND k1.vnr = 9 + LEFT JOIN + conn_v_locatiekenmerken k10 + ON x.alg_locatie_key = k10.alg_onrgoed_key AND k1.vnr = 10; + +/* Formatted on 9-7-2013 10:22:36 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE conn_import_onrgoed1 (p_import_key IN NUMBER) +AS + c_delim VARCHAR2 (1) := ';'; + v_newline VARCHAR2 (1000); -- Input line + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + header_is_valid NUMBER; + v_count_tot NUMBER (10); + v_count_imp NUMBER (10); + v_ongeldig NUMBER (1); + v_aanduiding VARCHAR2 (200); + v_alg_kenmerk_key1 VARCHAR2 (255); + v_alg_kenmerk_key2 VARCHAR2 (255); + v_alg_kenmerk_key3 VARCHAR2 (255); + v_alg_kenmerk_key4 VARCHAR2 (255); + v_alg_kenmerk_key5 VARCHAR2 (255); + v_alg_kenmerk_key6 VARCHAR2 (255); + v_alg_kenmerk_key7 VARCHAR2 (255); + v_alg_kenmerk_key8 VARCHAR2 (255); + v_alg_kenmerk_key9 VARCHAR2 (255); + v_alg_kenmerk_key10 VARCHAR2 (255); + -- De importvelden: + v_regio_omschrijving VARCHAR2 (255); -- 30 + v_district_omschrijving VARCHAR2 (255); -- 30 + v_locatie_code VARCHAR2 (255); -- 10 + v_locatie_omschrijving VARCHAR2 (255); -- 30 + v_gebouw_code VARCHAR2 (255); -- 10 + v_gebouw_naam VARCHAR2 (255); -- 30 + v_srtgebouw_omschrijving VARCHAR2 (255); -- 30 + v_locatie_verantw VARCHAR2 (255); -- 30 + v_locatie_verantw_tel VARCHAR2 (255); -- 15 + v_locatie_adres VARCHAR2 (255); -- 35 + v_locatie_postcode VARCHAR2 (255); -- 12 + v_locatie_plaats VARCHAR2 (255); -- 30 + v_locatie_land VARCHAR2 (255); -- 30 + v_locatie_post_adres VARCHAR2 (255); -- 35 + v_locatie_post_postcode VARCHAR2 (255); -- 12 + v_locatie_post_plaats VARCHAR2 (255); -- 30 + v_locatie_post_land VARCHAR2 (255); -- 30 + v_alg_kenmerkwaarde1 VARCHAR2 (255); + v_alg_kenmerkwaarde2 VARCHAR2 (255); + v_alg_kenmerkwaarde3 VARCHAR2 (255); + v_alg_kenmerkwaarde4 VARCHAR2 (255); + v_alg_kenmerkwaarde5 VARCHAR2 (255); + v_alg_kenmerkwaarde6 VARCHAR2 (255); + v_alg_kenmerkwaarde7 VARCHAR2 (255); + v_alg_kenmerkwaarde8 VARCHAR2 (255); + v_alg_kenmerkwaarde9 VARCHAR2 (255); + v_alg_kenmerkwaarde10 VARCHAR2 (255); + + CURSOR c1 + IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; + + -- Controleer tijdens import-fase alleen op (uniek) bestaan van kenmerk (of + -- deze is gedefinieerd voor gebouw/locatie, volgt tijdens de update-fase)! + FUNCTION bepaal_kenmerk_key (ok IN VARCHAR) + RETURN NUMBER + IS + v_kenmerk_key NUMBER; + BEGIN + IF fac.safe_to_number (ok) IS NULL + THEN -- Kenmerkwaarde is alfanumeriek (dus omschrijving)! + SELECT alg_kenmerk_key + INTO v_kenmerk_key + FROM alg_kenmerk + WHERE alg_kenmerk_verwijder IS NULL + AND alg_kenmerk_niveau IN ('L', 'G') + AND alg_kenmerk_upper = UPPER (ok) + AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S'); + ELSE -- Kenmerkwaarde is numeriek (dus key)! + SELECT alg_kenmerk_key + INTO v_kenmerk_key + FROM alg_kenmerk + WHERE alg_kenmerk_verwijder IS NULL + AND alg_kenmerk_niveau IN ('L', 'G') + AND alg_kenmerk_key = fac.safe_to_number (ok) + AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S'); + END IF; + + RETURN v_kenmerk_key; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + IF ok IS NULL OR UPPER (ok) LIKE 'KENMERK%' + THEN + RETURN NULL; + ELSE + fac.imp_writelog (p_import_key, + 'W', + 'Fout bij bepalen kenmerk [' || ok || ']', + 'Bestaat niet of type ongeldig'); + COMMIT; + RETURN NULL; + END IF; + WHEN OTHERS + THEN + fac.imp_writelog (p_import_key, + 'W', + 'Fout bij bepalen kenmerk [' || ok || ']', + 'Kan kenmerk niet 1-duidig bepalen'); + COMMIT; + RETURN NULL; + END; +BEGIN + -- Eerst opruiming + DELETE FROM conn_imp_onrgoed1; + + COMMIT; + + v_count_tot := 0; + v_count_imp := 0; + header_is_valid := 0; + + FOR rec1 IN c1 + LOOP + BEGIN + v_errormsg := 'Fout FETCH importregel'; + + v_newline := rec1.fac_imp_file_line; + v_errormsg := 'Fout bij opvragen importregel'; + v_aanduiding := ''; + v_ongeldig := 0; + -- Lees alle veldwaarden + fac.imp_getfield (v_newline, c_delim, v_regio_omschrijving); + fac.imp_getfield (v_newline, c_delim, v_district_omschrijving); + fac.imp_getfield (v_newline, c_delim, v_locatie_code); + fac.imp_getfield (v_newline, c_delim, v_locatie_omschrijving); + fac.imp_getfield (v_newline, c_delim, v_gebouw_code); + fac.imp_getfield (v_newline, c_delim, v_gebouw_naam); + fac.imp_getfield (v_newline, c_delim, v_srtgebouw_omschrijving); + fac.imp_getfield (v_newline, c_delim, v_locatie_verantw); + fac.imp_getfield (v_newline, c_delim, v_locatie_verantw_tel); + fac.imp_getfield (v_newline, c_delim, v_locatie_adres); + fac.imp_getfield (v_newline, c_delim, v_locatie_postcode); + fac.imp_getfield (v_newline, c_delim, v_locatie_plaats); + fac.imp_getfield (v_newline, c_delim, v_locatie_land); + fac.imp_getfield (v_newline, c_delim, v_locatie_post_adres); + fac.imp_getfield (v_newline, c_delim, v_locatie_post_postcode); + fac.imp_getfield (v_newline, c_delim, v_locatie_post_plaats); + fac.imp_getfield (v_newline, c_delim, v_locatie_post_land); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde1); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde2); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde3); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde4); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde5); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde6); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde7); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde8); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde9); + fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde10); + + v_aanduiding := '[' || v_locatie_code || '|' || v_gebouw_code || '] '; + + -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen + -- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen! + -- Ik negeer alles totdat ik een geldige header ben gepasseerd. + IF (header_is_valid = 0) + THEN + IF UPPER (v_regio_omschrijving) LIKE 'REGIO%' + AND UPPER (v_district_omschrijving) LIKE 'DISTRICT%' + AND UPPER (v_locatie_code) = 'LOCATIECODE' + AND UPPER (v_gebouw_code) = 'GEBOUWCODE' + AND UPPER (v_locatie_adres) = 'BEZOEKADRES' + AND UPPER (v_locatie_post_adres) = 'POSTADRES' + AND UPPER (v_locatie_post_land) LIKE 'LAND%' + THEN + v_alg_kenmerk_key1 := bepaal_kenmerk_key (v_alg_kenmerkwaarde1); + v_alg_kenmerk_key2 := bepaal_kenmerk_key (v_alg_kenmerkwaarde2); + v_alg_kenmerk_key3 := bepaal_kenmerk_key (v_alg_kenmerkwaarde3); + v_alg_kenmerk_key4 := bepaal_kenmerk_key (v_alg_kenmerkwaarde4); + v_alg_kenmerk_key5 := bepaal_kenmerk_key (v_alg_kenmerkwaarde5); + v_alg_kenmerk_key6 := bepaal_kenmerk_key (v_alg_kenmerkwaarde6); + v_alg_kenmerk_key7 := bepaal_kenmerk_key (v_alg_kenmerkwaarde7); + v_alg_kenmerk_key8 := bepaal_kenmerk_key (v_alg_kenmerkwaarde8); + v_alg_kenmerk_key9 := bepaal_kenmerk_key (v_alg_kenmerkwaarde9); + v_alg_kenmerk_key10 := + bepaal_kenmerk_key (v_alg_kenmerkwaarde10); + + header_is_valid := 1; + END IF; + ELSE + v_count_tot := v_count_tot + 1; + + -- Controleer alle veldwaarden + v_errormsg := 'Regio-omschrijving leeg of te lang'; + v_regio_omschrijving := TRIM (v_regio_omschrijving); + + IF v_regio_omschrijving IS NULL + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel overgeslagen'); + ELSIF LENGTH (v_regio_omschrijving) > 30 + THEN + v_regio_omschrijving := SUBSTR (v_regio_omschrijving, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regio-omschrijving afgebroken tot [' + || v_regio_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'District-omschrijving leeg of te lang'; + v_district_omschrijving := TRIM (v_district_omschrijving); + + IF v_district_omschrijving IS NULL + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel overgeslagen'); + ELSIF LENGTH (v_district_omschrijving) > 30 + THEN + v_district_omschrijving := + SUBSTR (v_district_omschrijving, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'District-omschrijving afgebroken tot [' + || v_district_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Locatiecode leeg of te lang'; + v_locatie_code := TRIM (v_locatie_code); + + IF v_locatie_code IS NULL OR LENGTH (v_locatie_code) > 10 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel overgeslagen'); + END IF; + + -- + v_errormsg := 'Locatie-omschrijving leeg of te lang'; + v_locatie_omschrijving := TRIM (v_locatie_omschrijving); + + IF v_locatie_omschrijving IS NULL + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel overgeslagen'); + ELSIF LENGTH (v_locatie_omschrijving) > 30 + THEN + v_locatie_omschrijving := + SUBSTR (v_locatie_omschrijving, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Locatie-omschrijving afgebroken tot [' + || v_locatie_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Gebouwcode leeg of te lang'; + v_gebouw_code := TRIM (v_gebouw_code); + + IF v_gebouw_code IS NULL OR LENGTH (v_gebouw_code) > 12 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel overgeslagen'); + END IF; + + -- + v_errormsg := 'Gebouwnaam leeg of te lang'; + v_gebouw_naam := TRIM (v_gebouw_naam); + + IF v_gebouw_naam IS NULL + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel overgeslagen'); + ELSIF LENGTH (v_gebouw_naam) > 30 + THEN + v_gebouw_naam := SUBSTR (v_gebouw_naam, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Gebouwnaam afgebroken tot [' || v_gebouw_naam || ']' + ); + END IF; + + -- + v_errormsg := 'Gebouwfunctie leeg of te lang'; + v_srtgebouw_omschrijving := TRIM (v_srtgebouw_omschrijving); + + IF v_srtgebouw_omschrijving IS NULL + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel overgeslagen'); + ELSIF LENGTH (v_srtgebouw_omschrijving) > 30 + THEN + v_srtgebouw_omschrijving := + SUBSTR (v_srtgebouw_omschrijving, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Gebouwfunctie afgebroken tot [' + || v_srtgebouw_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Naam te lang (contactpersoon)'; + v_locatie_verantw := TRIM (v_locatie_verantw); + + IF LENGTH (v_locatie_verantw) > 30 + THEN + v_locatie_verantw := SUBSTR (v_locatie_verantw, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Naam afgebroken tot [' || v_locatie_verantw || ']' + ); + END IF; + + -- + v_errormsg := 'Telefoonnummer te lang (contactpersoon)'; + v_locatie_verantw_tel := TRIM (v_locatie_verantw_tel); + + IF LENGTH (v_locatie_verantw_tel) > 15 + THEN + v_locatie_verantw_tel := SUBSTR (v_locatie_verantw_tel, 1, 15); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Telefoonnummer afgebroken tot [' + || v_locatie_verantw_tel + || ']' + ); + END IF; + + -- + v_errormsg := 'Adres te lang (bezoekadres)'; + v_locatie_adres := TRIM (v_locatie_adres); + + IF LENGTH (v_locatie_adres) > 35 + THEN + v_locatie_adres := SUBSTR (v_locatie_adres, 1, 35); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Adres afgebroken tot ]' || v_locatie_adres || ']' + ); + END IF; + + -- + v_errormsg := 'Postcode te lang (bezoekadres)'; + v_locatie_postcode := TRIM (v_locatie_postcode); + + IF LENGTH (v_locatie_postcode) > 12 + THEN + v_locatie_postcode := SUBSTR (v_locatie_postcode, 1, 12); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Postcode afgebroken tot [' || v_locatie_postcode || ']' + ); + END IF; + + -- + v_errormsg := 'Plaatsnaam te lang (bezoekadres)'; + v_locatie_plaats := TRIM (v_locatie_plaats); + + IF LENGTH (v_locatie_plaats) > 30 + THEN + v_locatie_plaats := SUBSTR (v_locatie_plaats, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Plaatsnaam afgebroken tot [' || v_locatie_plaats || ']' + ); + END IF; + + -- + v_errormsg := 'Landnaam te lang (bezoekadres)'; + v_locatie_land := TRIM (v_locatie_land); + + IF LENGTH (v_locatie_land) > 30 + THEN + v_locatie_land := SUBSTR (v_locatie_land, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Landnaam afgebroken tot [' || v_locatie_land || ']' + ); + END IF; + + -- + v_errormsg := 'Adres te lang (postadres)'; + v_locatie_post_adres := TRIM (v_locatie_post_adres); + + IF LENGTH (v_locatie_post_adres) > 35 + THEN + v_locatie_post_adres := SUBSTR (v_locatie_post_adres, 1, 35); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Adres afgebroken tot [' || v_locatie_post_adres || ']' + ); + END IF; + + -- + v_errormsg := 'Postcode te lang (postadres)'; + v_locatie_post_postcode := TRIM (v_locatie_post_postcode); + + IF LENGTH (v_locatie_post_postcode) > 12 + THEN + v_locatie_post_postcode := + SUBSTR (v_locatie_post_postcode, 1, 12); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Postcode afgebroken tot [' + || v_locatie_post_postcode + || ']' + ); + END IF; + + -- + v_errormsg := 'Plaatsnaam te lang (postadres)'; + v_locatie_post_plaats := TRIM (v_locatie_post_plaats); + + IF LENGTH (v_locatie_post_plaats) > 30 + THEN + v_locatie_post_plaats := SUBSTR (v_locatie_post_plaats, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Plaatsnaam afgebroken tot [' + || v_locatie_post_plaats + || ']' + ); + END IF; + + -- + v_errormsg := 'Landnaam te lang (postadres)'; + v_locatie_post_land := TRIM (v_locatie_post_land); + + IF LENGTH (v_locatie_post_land) > 30 + THEN + v_locatie_post_land := SUBSTR (v_locatie_post_land, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Landnaam afgebroken tot [' || v_locatie_post_land || ']' + ); + END IF; + + -- De rest alleen ff trimmen. + v_alg_kenmerkwaarde1 := TRIM (v_alg_kenmerkwaarde1); + v_alg_kenmerkwaarde2 := TRIM (v_alg_kenmerkwaarde2); + v_alg_kenmerkwaarde3 := TRIM (v_alg_kenmerkwaarde3); + v_alg_kenmerkwaarde4 := TRIM (v_alg_kenmerkwaarde4); + v_alg_kenmerkwaarde5 := TRIM (v_alg_kenmerkwaarde5); + v_alg_kenmerkwaarde6 := TRIM (v_alg_kenmerkwaarde6); + v_alg_kenmerkwaarde7 := TRIM (v_alg_kenmerkwaarde7); + v_alg_kenmerkwaarde8 := TRIM (v_alg_kenmerkwaarde8); + v_alg_kenmerkwaarde9 := TRIM (v_alg_kenmerkwaarde9); + v_alg_kenmerkwaarde10 := TRIM (v_alg_kenmerkwaarde10); + + -- Insert geformatteerde import record + IF v_ongeldig = 0 + THEN + BEGIN + v_errormsg := 'Fout bij wegschrijven importregel'; + + INSERT INTO conn_imp_onrgoed1 ( + alg_regio_omschrijving, + alg_district_omschrijving, + alg_locatie_code, + alg_locatie_omschrijving, + alg_gebouw_code, + alg_gebouw_naam, + alg_srtgebouw_omschrijving, + alg_locatie_verantw, + alg_locatie_verantw_tel, + alg_locatie_adres, + alg_locatie_postcode, + alg_locatie_plaats, + alg_locatie_land, + alg_locatie_post_adres, + alg_locatie_post_postcode, + alg_locatie_post_plaats, + alg_locatie_post_land, + alg_kenmerkwaarde1, + alg_kenmerkwaarde2, + alg_kenmerkwaarde3, + alg_kenmerkwaarde4, + alg_kenmerkwaarde5, + alg_kenmerkwaarde6, + alg_kenmerkwaarde7, + alg_kenmerkwaarde8, + alg_kenmerkwaarde9, + alg_kenmerkwaarde10 + ) + VALUES ( + v_regio_omschrijving, + v_district_omschrijving, + v_locatie_code, + v_locatie_omschrijving, + v_gebouw_code, + v_gebouw_naam, + v_srtgebouw_omschrijving, + v_locatie_verantw, + v_locatie_verantw_tel, + v_locatie_adres, + v_locatie_postcode, + v_locatie_plaats, + v_locatie_land, + v_locatie_post_adres, + v_locatie_post_postcode, + v_locatie_post_plaats, + v_locatie_post_land, + DECODE ( + v_alg_kenmerk_key1, + NULL, + v_alg_kenmerkwaarde1, + TO_CHAR (v_alg_kenmerk_key1) + || '=' + || SUBSTR (v_alg_kenmerkwaarde1, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key2, + NULL, + v_alg_kenmerkwaarde2, + TO_CHAR (v_alg_kenmerk_key2) + || '=' + || SUBSTR (v_alg_kenmerkwaarde2, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key3, + NULL, + v_alg_kenmerkwaarde3, + TO_CHAR (v_alg_kenmerk_key3) + || '=' + || SUBSTR (v_alg_kenmerkwaarde3, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key4, + NULL, + v_alg_kenmerkwaarde4, + TO_CHAR (v_alg_kenmerk_key4) + || '=' + || SUBSTR (v_alg_kenmerkwaarde4, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key5, + NULL, + v_alg_kenmerkwaarde5, + TO_CHAR (v_alg_kenmerk_key5) + || '=' + || SUBSTR (v_alg_kenmerkwaarde5, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key6, + NULL, + v_alg_kenmerkwaarde6, + TO_CHAR (v_alg_kenmerk_key6) + || '=' + || SUBSTR (v_alg_kenmerkwaarde6, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key7, + NULL, + v_alg_kenmerkwaarde7, + TO_CHAR (v_alg_kenmerk_key7) + || '=' + || SUBSTR (v_alg_kenmerkwaarde7, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key8, + NULL, + v_alg_kenmerkwaarde8, + TO_CHAR (v_alg_kenmerk_key8) + || '=' + || SUBSTR (v_alg_kenmerkwaarde8, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key9, + NULL, + v_alg_kenmerkwaarde9, + TO_CHAR (v_alg_kenmerk_key9) + || '=' + || SUBSTR (v_alg_kenmerkwaarde9, 1, 200) + ), + DECODE ( + v_alg_kenmerk_key10, + NULL, + v_alg_kenmerkwaarde10, + TO_CHAR (v_alg_kenmerk_key10) + || '=' + || SUBSTR (v_alg_kenmerkwaarde10, 1, 200) + ) + ); + + COMMIT; + v_count_imp := v_count_imp + 1; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END IF; + END IF; + END; + END LOOP; + + IF (header_is_valid = 0) + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Ongeldig importbestand', + 'Geen header of header niet volgens specificatie!'); + ELSE + fac.imp_writelog ( + p_import_key, + 'S', + 'Locatie-Gebouw/#ingelezen regels: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_import_key, + 'S', + 'Locatie-Gebouw/#ongeldige niet ingelezen importregels: ' + || TO_CHAR (v_count_tot - v_count_imp), + '' + ); + END IF; + + COMMIT; +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Inleesproces locaties/gebouwen afgebroken!'); +END conn_import_onrgoed1; +/ + +/* Formatted on 9-7-2013 11:48:12 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE conn_update_onrgoed1 (p_import_key IN NUMBER) +IS + v_errormsg VARCHAR2 (1000) := '-'; + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_aanduiding VARCHAR2 (200); + v_count_tot NUMBER (10); + v_count_new NUMBER (10); + v_count_upd NUMBER (10); + v_count NUMBER (10); + v_regio_key NUMBER (10); + v_district_key NUMBER (10); + v_locatie_key NUMBER (10); + v_srtgebouw_key NUMBER (10); + v_gebouw_key NUMBER (10); + v_srtnoti_code VARCHAR2 (6); + + CURSOR cRegio -- Regioomschrijving uniek! + IS + SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving + FROM conn_imp_onrgoed1 + GROUP BY UPPER (alg_regio_omschrijving) + ORDER BY 1; + + CURSOR cDistrict -- Districtomschrijving uniek binnen regio! + IS + SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving, + MIN (alg_district_omschrijving) alg_district_omschrijving + FROM conn_imp_onrgoed1 + GROUP BY UPPER (alg_regio_omschrijving), + UPPER (alg_district_omschrijving) + ORDER BY 1, 2; + + CURSOR cLocatie -- Locatiecode uniek (omschrijving niet)! + IS + SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving, + MIN (alg_district_omschrijving) alg_district_omschrijving, + MIN (alg_locatie_code) alg_locatie_code, + MIN (alg_locatie_omschrijving) alg_locatie_omschrijving, + MIN (alg_locatie_verantw) alg_locatie_verantw, + MIN (alg_locatie_verantw_tel) alg_locatie_verantw_tel, + MIN (alg_locatie_adres) alg_locatie_adres, + MIN (alg_locatie_postcode) alg_locatie_postcode, + MIN (alg_locatie_plaats) alg_locatie_plaats, + MIN (alg_locatie_land) alg_locatie_land, + MIN (alg_locatie_post_adres) alg_locatie_post_adres, + MIN (alg_locatie_post_postcode) alg_locatie_post_postcode, + MIN (alg_locatie_post_plaats) alg_locatie_post_plaats, + MIN (alg_locatie_post_land) alg_locatie_post_land, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))) kenmerk_key1, + MIN(SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1)) waarde1, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))) kenmerk_key2, + MIN(SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1)) waarde2, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))) kenmerk_key3, + MIN(SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1)) waarde3, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))) kenmerk_key4, + MIN(SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1)) waarde4, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))) kenmerk_key5, + MIN(SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1)) waarde5, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde6, 1, INSTR (alg_kenmerkwaarde6, '=') - 1))) kenmerk_key6, + MIN(SUBSTR (alg_kenmerkwaarde6, INSTR (alg_kenmerkwaarde6, '=') + 1)) waarde6, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde7, 1, INSTR (alg_kenmerkwaarde7, '=') - 1))) kenmerk_key7, + MIN(SUBSTR (alg_kenmerkwaarde7, INSTR (alg_kenmerkwaarde7, '=') + 1)) waarde7, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde8, 1, INSTR (alg_kenmerkwaarde8, '=') - 1))) kenmerk_key8, + MIN(SUBSTR (alg_kenmerkwaarde8, INSTR (alg_kenmerkwaarde8, '=') + 1)) waarde8, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde9, 1, INSTR (alg_kenmerkwaarde9, '=') - 1))) kenmerk_key9, + MIN(SUBSTR (alg_kenmerkwaarde9, INSTR (alg_kenmerkwaarde9, '=') + 1)) waarde9, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde10, 1, INSTR (alg_kenmerkwaarde10, '=') - 1))) kenmerk_key10, + MIN(SUBSTR (alg_kenmerkwaarde10, INSTR (alg_kenmerkwaarde10, '=') + 1)) waarde10 + FROM conn_imp_onrgoed1 + GROUP BY UPPER (alg_regio_omschrijving), + UPPER (alg_district_omschrijving), + UPPER (alg_locatie_code) + ORDER BY 1, 2, 3; + + CURSOR cSrtGebouw -- Gebouwfunctie uniek! + IS + SELECT MIN (alg_srtgebouw_omschrijving) alg_srtgebouw_omschrijving + FROM conn_imp_onrgoed1 + WHERE alg_srtgebouw_omschrijving IS NOT NULL + GROUP BY UPPER (alg_srtgebouw_omschrijving) + ORDER BY 1; + + CURSOR cGebouw -- Gebouwcode uniek binnen locatie (naam niet)! + IS + SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving, + MIN (alg_district_omschrijving) alg_district_omschrijving, + MIN (alg_locatie_code) alg_locatie_code, + MIN (alg_gebouw_code) alg_gebouw_code, + MIN (alg_gebouw_naam) alg_gebouw_naam, + MIN (alg_srtgebouw_omschrijving) alg_srtgebouw_omschrijving, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))) kenmerk_key1, + MIN(SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1)) waarde1, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))) kenmerk_key2, + MIN(SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1)) waarde2, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))) kenmerk_key3, + MIN(SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1)) waarde3, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))) kenmerk_key4, + MIN(SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1)) waarde4, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))) kenmerk_key5, + MIN(SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1)) waarde5, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde6, 1, INSTR (alg_kenmerkwaarde6, '=') - 1))) kenmerk_key6, + MIN(SUBSTR (alg_kenmerkwaarde6, INSTR (alg_kenmerkwaarde6, '=') + 1)) waarde6, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde7, 1, INSTR (alg_kenmerkwaarde7, '=') - 1))) kenmerk_key7, + MIN(SUBSTR (alg_kenmerkwaarde7, INSTR (alg_kenmerkwaarde7, '=') + 1)) waarde7, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde8, 1, INSTR (alg_kenmerkwaarde8, '=') - 1))) kenmerk_key8, + MIN(SUBSTR (alg_kenmerkwaarde8, INSTR (alg_kenmerkwaarde8, '=') + 1)) waarde8, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde9, 1, INSTR (alg_kenmerkwaarde9, '=') - 1))) kenmerk_key9, + MIN(SUBSTR (alg_kenmerkwaarde9, INSTR (alg_kenmerkwaarde9, '=') + 1)) waarde9, + MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde10, 1, INSTR (alg_kenmerkwaarde10, '=') - 1))) kenmerk_key10, + MIN(SUBSTR (alg_kenmerkwaarde10, INSTR (alg_kenmerkwaarde10, '=') + 1)) waarde10 + FROM conn_imp_onrgoed1 + GROUP BY UPPER (alg_regio_omschrijving), + UPPER (alg_district_omschrijving), + UPPER (alg_locatie_code), + UPPER (alg_gebouw_code) + ORDER BY 1, 2, 3, 4; + + -- SUBPROC + PROCEDURE upsert_algkenmerk (p_alg_key IN NUMBER, + p_alg_niv IN VARCHAR2, + p_kenmerk_key IN NUMBER, + p_waarde IN VARCHAR2) + AS + v_kenmerk_niveau VARCHAR2 (1); + v_kenmerk_type VARCHAR2 (1); + ccount NUMBER; + v_waarde VARCHAR2 (255); + v_objectnaam VARCHAR2 (30); + v_kolomnaam VARCHAR2 (30); + v_kolomtxt VARCHAR2 (30); + sql_stmt VARCHAR2 (1000); + v_onrgoedkenmerk_key NUMBER; + BEGIN + IF p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL + THEN + v_errormsg := 'Fout bij bepalen kenmerk [' || p_kenmerk_key || ']'; + + SELECT alg_kenmerk_niveau, alg_kenmerk_kenmerktype + INTO v_kenmerk_niveau, v_kenmerk_type + FROM alg_kenmerk + WHERE alg_kenmerk_verwijder IS NULL + AND alg_kenmerk_key = p_kenmerk_key + AND alg_kenmerk_niveau IN ('L', 'G'); + + IF (v_kenmerk_niveau = p_alg_niv) -- Alleen op juiste niveau doen! + THEN + IF v_kenmerk_type IN ('R', 'S') + THEN + v_errormsg := 'Fout bij bepalen eigen tabel'; + + SELECT COUNT ( * ) + INTO ccount + FROM alg_kenmerk k, fac_kenmerkdomein d + WHERE k.alg_kenmerk_key = p_kenmerk_key + AND k.alg_kenmerk_niveau = p_alg_niv + AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key + AND d.fac_usrtab_key IS NOT NULL; + + v_errormsg := + 'Fout bij bepalen nieuwe waarde [' || p_waarde || ']'; + + IF ccount = 1 + THEN -- Eigen tabel + SELECT TO_CHAR (ud.fac_usrdata_key) + INTO v_waarde + FROM alg_kenmerk k, + fac_kenmerkdomein d, + fac_v_aanwezigusrdata ud + WHERE k.alg_kenmerk_key = p_kenmerk_key + AND k.alg_kenmerk_niveau = p_alg_niv + AND k.fac_kenmerkdomein_key = + d.fac_kenmerkdomein_key + AND d.fac_usrtab_key = ud.fac_usrtab_key + AND UPPER (TRIM (ud.fac_usrdata_omschr)) = + UPPER (p_waarde); + ELSE -- FACILITOR view/tabel + SELECT d.fac_kenmerkdomein_objectnaam, + d.fac_kenmerkdomein_kolomnaam, + d.fac_kenmerkdomein_kolomtxt + INTO v_objectnaam, v_kolomnaam, v_kolomtxt + FROM alg_kenmerk k, fac_kenmerkdomein d + WHERE k.alg_kenmerk_key = p_kenmerk_key + AND k.alg_kenmerk_niveau = p_alg_niv + AND k.fac_kenmerkdomein_key = + d.fac_kenmerkdomein_key + AND d.fac_usrtab_key IS NULL; + + sql_stmt := + 'SELECT MAX (' + || v_kolomnaam + || ') FROM ' + || v_objectnaam + || ' WHERE UPPER (TRIM (' + || v_kolomtxt + || ')) = UPPER (''' + || p_waarde + || ''')'; + + EXECUTE IMMEDIATE sql_stmt INTO v_waarde; + END IF; + ELSE -- C(haracter)/D(ate)/N(umeric) + v_waarde := p_waarde; + END IF; + + v_errormsg := 'Fout bij bepalen huidige waarde'; + + SELECT COUNT ( * ), MAX (alg_onrgoedkenmerk_key) + INTO ccount, v_onrgoedkenmerk_key + FROM alg_v_aanwezigonrgoedkenmerk + WHERE alg_onrgoed_key = p_alg_key + AND alg_onrgoed_niveau = p_alg_niv + AND alg_kenmerk_key = p_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']'; + + INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key, + alg_onrgoed_niveau, + alg_kenmerk_key, + alg_onrgoedkenmerk_waarde) + VALUES (p_alg_key, + p_alg_niv, + p_kenmerk_key, + v_waarde); + ELSE + v_errormsg := 'Fout bij bijwerken waarde [' || v_waarde || ']'; + + UPDATE alg_onrgoedkenmerk + SET alg_onrgoedkenmerk_waarde = v_waarde + WHERE alg_onrgoedkenmerk_key = v_onrgoedkenmerk_key; + END IF; + END IF; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'upsert_algkenmerk'); + END; +BEGIN + -- *********** + -- ***REGIO*** + -- *********** + v_count_tot := 0; + v_count_new := 0; + + FOR recRegio IN cRegio + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := '[' || recRegio.alg_regio_omschrijving || '] '; + v_errormsg := 'Fout bij toevoegen regio'; + + SELECT COUNT ( * ) + INTO v_count + FROM alg_v_aanwezigregio + WHERE TRIM (alg_regio_upper) = + UPPER (recRegio.alg_regio_omschrijving); + + IF (v_count = 0) + THEN + INSERT INTO alg_regio (alg_regio_omschrijving) + VALUES (recRegio.alg_regio_omschrijving); + + v_count_new := v_count_new + 1; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Regio/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Regio/#toegevoegd: ' || TO_CHAR (v_count_new), + ''); + COMMIT; + + -- ************** + -- ***DISTRICT*** + -- ************** + v_count_tot := 0; + v_count_new := 0; + + FOR recDistrict IN cDistrict + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' + || recDistrict.alg_regio_omschrijving + || '|' + || recDistrict.alg_district_omschrijving + || '] '; + v_errormsg := 'Fout bij bepalen regio'; + + SELECT alg_regio_key + INTO v_regio_key + FROM alg_v_aanwezigregio + WHERE alg_regio_upper = + UPPER (recDistrict.alg_regio_omschrijving); + + v_errormsg := 'Fout bij toevoegen district'; + + SELECT COUNT ( * ) + INTO v_count + FROM alg_v_aanwezigdistrict + WHERE alg_regio_key = v_regio_key + AND TRIM (alg_district_upper) = + UPPER (recDistrict.alg_district_omschrijving); + + IF (v_count = 0) + THEN + INSERT INTO alg_district ( + alg_regio_key, + alg_district_omschrijving + ) + VALUES (v_regio_key, recDistrict.alg_district_omschrijving); + + v_count_new := v_count_new + 1; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'District/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'District/#toegevoegd: ' || TO_CHAR (v_count_new), + ''); + COMMIT; + + -- ************** + -- ***LOCATIE**** + -- ************** + v_count_tot := 0; + v_count_new := 0; + v_count_upd := 0; + + FOR recLocatie IN cLocatie + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' + || recLocatie.alg_regio_omschrijving + || '|' + || recLocatie.alg_district_omschrijving + || '|' + || recLocatie.alg_locatie_code + || '] '; + v_errormsg := 'Fout bij bepalen regio'; + + SELECT alg_regio_key + INTO v_regio_key + FROM alg_v_aanwezigregio + WHERE alg_regio_upper = UPPER (recLocatie.alg_regio_omschrijving); + + v_errormsg := 'Fout bij bepalen district'; + + SELECT alg_district_key + INTO v_district_key + FROM alg_v_aanwezigdistrict + WHERE alg_regio_key = v_regio_key + AND TRIM (alg_district_upper) = + UPPER (recLocatie.alg_district_omschrijving); + + v_errormsg := 'Fout bij toevoegen locatie'; + + SELECT COUNT ( * ) + INTO v_count + FROM alg_v_aanweziglocatie + WHERE alg_district_key = v_district_key + AND UPPER (alg_locatie_code) = + UPPER (recLocatie.alg_locatie_code); + + IF (v_count = 0) + THEN + INSERT INTO alg_locatie (alg_district_key, + alg_locatie_code, + alg_locatie_omschrijving, + alg_locatie_verantw, + alg_locatie_verantw_tel, + alg_locatie_adres, + alg_locatie_postcode, + alg_locatie_plaats, + alg_locatie_land, + alg_locatie_post_adres, + alg_locatie_post_postcode, + alg_locatie_post_plaats, + alg_locatie_post_land) + VALUES (v_district_key, + recLocatie.alg_locatie_code, + recLocatie.alg_locatie_omschrijving, + recLocatie.alg_locatie_verantw, + recLocatie.alg_locatie_verantw_tel, + recLocatie.alg_locatie_adres, + recLocatie.alg_locatie_postcode, + recLocatie.alg_locatie_plaats, + recLocatie.alg_locatie_land, + recLocatie.alg_locatie_post_adres, + recLocatie.alg_locatie_post_postcode, + recLocatie.alg_locatie_post_plaats, + recLocatie.alg_locatie_post_land) + RETURNING alg_locatie_key INTO v_locatie_key; + + v_srtnoti_code := 'ALGLNE'; + v_count_new := v_count_new + 1; + ELSE -- bijwerken object! + v_errormsg := 'Fout bij bepalen locatie'; + + SELECT alg_locatie_key + INTO v_locatie_key + FROM alg_v_aanweziglocatie + WHERE UPPER (TRIM (alg_locatie_code)) = + UPPER (recLocatie.alg_locatie_code); + + v_srtnoti_code := 'ALGLUP'; + v_count_upd := v_count_upd + 1; + END IF; + + -- NULL-waarden resulteren NIET in het wissen van kenmerkvelden + -- (bijwerken kan wel, maar wissen dus niet)! + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key1, recLocatie.waarde1); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key2, recLocatie.waarde2); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key3, recLocatie.waarde3); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key4, recLocatie.waarde4); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key5, recLocatie.waarde5); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key6, recLocatie.waarde6); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key7, recLocatie.waarde7); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key8, recLocatie.waarde8); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key9, recLocatie.waarde9); + upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key10, recLocatie.waarde10); + + fac.trackaction (v_srtnoti_code, v_locatie_key, NULL, NULL, NULL); + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Locatie/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Locatie/#toegevoegd: ' || TO_CHAR (v_count_new), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Locatie/#bijgewerkt: ' || TO_CHAR (v_count_upd), + ''); + COMMIT; + + -- ******************** + -- ***GEBOUWFUNCTIE**** + -- ******************** + v_count_tot := 0; + v_count_new := 0; + + FOR recSrtGebouw IN cSrtGebouw + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' || recSrtGebouw.alg_srtgebouw_omschrijving || '] '; + v_errormsg := 'Fout bij toevoegen gebouwfunctie'; + + SELECT COUNT ( * ) + INTO v_count + FROM alg_v_aanwezigsrtgebouw + WHERE TRIM (alg_srtgebouw_upper) = + UPPER (recSrtGebouw.alg_srtgebouw_omschrijving); + + IF (v_count = 0) + THEN + INSERT INTO alg_srtgebouw (alg_srtgebouw_omschrijving) + VALUES (recSrtGebouw.alg_srtgebouw_omschrijving); + + v_count_new := v_count_new + 1; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Gebouwfunctie/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Gebouwfunctie/#toegevoegd: ' || TO_CHAR (v_count_new), + ''); + COMMIT; + + -- ************ + -- ***GEBOUW*** + -- ************ + v_count_tot := 0; + v_count_new := 0; + v_count_upd := 0; + + FOR recGebouw IN cGebouw + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' + || recGebouw.alg_regio_omschrijving + || '|' + || recGebouw.alg_district_omschrijving + || '|' + || recGebouw.alg_locatie_code + || '|' + || recGebouw.alg_gebouw_code + || '] '; + v_errormsg := 'Fout bij bepalen regio'; + + SELECT alg_regio_key + INTO v_regio_key + FROM alg_v_aanwezigregio + WHERE alg_regio_upper = UPPER (recGebouw.alg_regio_omschrijving); + + v_errormsg := 'Fout bij bepalen district'; + + SELECT alg_district_key + INTO v_district_key + FROM alg_v_aanwezigdistrict + WHERE alg_regio_key = v_regio_key + AND TRIM (alg_district_upper) = + UPPER (recGebouw.alg_district_omschrijving); + + v_errormsg := 'Fout bij bepalen locatie'; + + SELECT alg_locatie_key + INTO v_locatie_key + FROM alg_v_aanweziglocatie + WHERE alg_district_key = v_district_key + AND UPPER (TRIM (alg_locatie_code)) = + UPPER (recGebouw.alg_locatie_code); + + v_errormsg := 'Fout bij bepalen gebouwfunctie'; + + SELECT alg_srtgebouw_key + INTO v_srtgebouw_key + FROM alg_v_aanwezigsrtgebouw + WHERE TRIM (alg_srtgebouw_upper) = + UPPER (recGebouw.alg_srtgebouw_omschrijving); + + v_errormsg := 'Fout bij toevoegen gebouw'; + + SELECT COUNT ( * ) + INTO v_count + FROM alg_v_aanweziggebouw + WHERE alg_locatie_key = v_locatie_key + AND UPPER (TRIM (alg_gebouw_code)) = + UPPER (recGebouw.alg_gebouw_code); + + IF (v_count = 0) + THEN + INSERT INTO alg_gebouw (alg_locatie_key, + alg_gebouw_code, + alg_gebouw_naam, + alg_srtgebouw_key) + VALUES (v_locatie_key, + recGebouw.alg_gebouw_code, + recGebouw.alg_gebouw_naam, + v_srtgebouw_key) + RETURNING alg_gebouw_key INTO v_gebouw_key; + + v_srtnoti_code := 'ALGGNE'; + v_count_new := v_count_new + 1; + ELSE -- bijwerken object! + v_errormsg := 'Fout bij bepalen gebouw'; + + SELECT alg_gebouw_key + INTO v_gebouw_key + FROM alg_v_aanweziggebouw + WHERE alg_locatie_key = v_locatie_key + AND UPPER (TRIM (alg_gebouw_code)) = + UPPER (recGebouw.alg_gebouw_code); + + v_srtnoti_code := 'ALGGUP'; + v_count_upd := v_count_upd + 1; + END IF; + + -- NULL-waarden resulteren NIET in het wissen van kenmerkvelden + -- (bijwerken kan wel, maar wissen dus niet)! + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key1, recGebouw.waarde1); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key2, recGebouw.waarde2); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key3, recGebouw.waarde3); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key4, recGebouw.waarde4); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key5, recGebouw.waarde5); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key6, recGebouw.waarde6); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key7, recGebouw.waarde7); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key8, recGebouw.waarde8); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key9, recGebouw.waarde9); + upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key10, recGebouw.waarde10); + + fac.trackaction (v_srtnoti_code, v_gebouw_key, NULL, NULL, NULL); + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Gebouw/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Gebouw/#toegevoegd: ' || TO_CHAR (v_count_new), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Gebouw/#bijgewerkt: ' || TO_CHAR (v_count_upd), + ''); + COMMIT; +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + 'Importproces locaties/gebouwen afgebroken!'); +END conn_update_onrgoed1; +/ + -- BASW-export; eporteer de afgemelde opdrachten (sinds de laatste keer) en -- markeer deze vervolgens als 'ORDAFM-doorgezet' (= hidden kenmerk)! /* Formatted on 26-4-2012 11:32:24 (QP5 v5.115.810.9015) */ @@ -12475,12 +14159,9 @@ EXCEPTION END; / -BEGIN fac.registercustversion('CONN', 54); END; +BEGIN fac.registercustversion('CONN', 55); END; / - BEGIN adm.systrackscript('$Workfile: conn.sql $', '$Revision$', 0); END; / - COMMIT; - SPOOL OFF