-- -- $Id$ -- DEFINE thisfile = 'PLGR.SQL' DEFINE dbuser = 'PLGR' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ --CREATE OR REPLACE PACKAGE PLGR --AS --END; --/ --CREATE OR REPLACE PACKAGE BODY PLGR --AS --END; --/ -- Import routines CREATE OR REPLACE PROCEDURE PLGR_IMPORT_TAKEN (p_import_key IN NUMBER) AS CURSOR obj IS SELECT fac_imp_csv_key fac_imp_csv_key, fac_imp_csv_col03 ins_groep_oms, fac_imp_csv_col04 ins_srtdeel_code, fac_imp_csv_col05 ins_srtdeel_oms, fac_imp_csv_col06 ins_deel_omschrijving, fac_imp_csv_col07 taak_omschrijving, fac_imp_csv_col08 taak_cyclus, fac_imp_csv_col09 taak_cyclus_eenheid, fac_imp_csv_col10 taak_datum, fac_imp_csv_col11 taak_categorie, fac_imp_csv_col12 taak_kosten, fac_imp_csv_col13 taak_default_cyclus, fac_imp_csv_col14 taak_default_cyclus_eenheid FROM fac_imp_csv WHERE fac_import_key=p_import_key; v_ins_deel_key NUMBER; BEGIN fac_import_genericcsv(p_import_key); FOR rec in obj LOOP IF (LENGTH(rec.taak_datum)>1 AND LENGTH(rec.taak_cyclus)>=1 AND LENGTH(rec.taak_categorie)>1) THEN BEGIN SELECT i.ins_deel_key INTO v_ins_deel_key FROM ins_v_deel_gegevens i, ins_srtdeel id WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving AND i.ins_srtgroep_upper=UPPER(rec.ins_groep_oms) AND i.ins_srtdeel_key = id.ins_srtdeel_key AND id.ins_srtdeel_code = rec.ins_srtdeel_code AND id.ins_srtdeel_upper=UPPER(rec.ins_srtdeel_oms); EXCEPTION WHEN NO_DATA_FOUND THEN v_ins_deel_key := -1; END; IF v_ins_deel_key=-1 THEN fac.imp_writelog (p_import_key, 'W', 'Object '||rec.ins_deel_omschrijving||' niet gevonden', 'Regel wordt overgeslagen'); DELETE FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key AND fac_import_key=p_import_key; END IF; ELSE fac.imp_writelog (p_import_key, 'W', 'De aangeleverde regel voor object '||rec.ins_deel_omschrijving|| ' voldoet niet', 'Regel wordt overgeslagen'); DELETE FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key AND fac_import_key=p_import_key; END IF; END LOOP; END; / CREATE OR REPLACE PROCEDURE PLGR_UPDATE_TAKEN(p_import_key IN NUMBER) AS CURSOR obj IS SELECT fac_imp_csv_key fac_imp_csv_key, fac_imp_csv_col03 ins_groep_oms, fac_imp_csv_col04 ins_srtdeel_code, fac_imp_csv_col05 ins_srtdeel_oms, fac_imp_csv_col06 ins_deel_omschrijving, fac_imp_csv_col07 taak_omschrijving, fac_imp_csv_col08 taak_cyclus, fac_imp_csv_col09 taak_cyclus_eenheid, fac_imp_csv_col10 taak_datum, fac_imp_csv_col11 taak_categorie, fac_imp_csv_col12 taak_kosten, fac_imp_csv_col13 taak_default_cyclus, fac_imp_csv_col14 taak_default_cyclus_eenheid FROM fac_imp_csv WHERE fac_import_key=p_import_key; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_eenheid NUMBER; v_default_eenheid NUMBER; v_deel_key NUMBER; v_ins_discipine_key NUMBER; v_ins_srtgroep_key NUMBER; v_ins_srtdeel_key NUMBER; v_taak_cyclus NUMBER; v_taak_default_cyclus NUMBER; v_revisie_interval NUMBER; v_onderhoud_interval NUMBER; v_taak_kosten NUMBER; v_taak_datum DATE; v_ins_srtcontrole_niveau VARCHAR2(2); v_srtkenmerk_doc NUMBER; v_taakcat_key NUMBER; v_srtcontrole_key NUMBER; v_srtcontroledl_xcp_key NUMBER; v_taakcat_ismjob NUMBER; BEGIN v_onderhoud_interval:=1; v_deel_key:=-1; v_taak_cyclus :=0; BEGIN SELECT ins_srtkenmerk_key INTO v_srtkenmerk_doc FROM ins_srtkenmerk i WHERE i.ins_srtkenmerk_code='DOCUMENTEN' AND i.ins_srtkenmerk_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_srtkenmerk_doc:=-1; END; FOR rec IN obj LOOP v_taak_datum := fac.safe_to_date(rec.taak_datum,'DD-MM-YYYY'); -- (default)taak cyclus eenheid kan zijn: -- 4=jaarlijk -- 3=maand -- 2=week -- 1=dag IF rec.taak_cyclus_eenheid='4' THEN v_eenheid:=4; ELSIF rec.taak_cyclus_eenheid='3' THEN v_eenheid:=3; ELSIF rec.taak_cyclus_eenheid='2' THEN v_eenheid:=2; ELSIF rec.taak_cyclus_eenheid='1' THEN v_eenheid:=1; END IF; IF rec.taak_default_cyclus_eenheid='4' THEN v_default_eenheid:=4; ELSIF rec.taak_default_cyclus_eenheid='3' THEN v_default_eenheid:=3; ELSIF rec.taak_default_cyclus_eenheid='2' THEN v_default_eenheid:=2; ELSIF rec.taak_default_cyclus_eenheid='1' THEN v_default_eenheid:=1; ELSE v_default_eenheid:=v_eenheid; END IF; v_ins_srtcontrole_niveau:='S'; --Haal het object, discipine , groep en objectsoort BEGIN v_errormsg :='Ophalen object '||rec.ins_deel_omschrijving; SELECT i.ins_deel_key, i.ins_discipline_key, i.ins_srtgroep_key, i.ins_srtdeel_key INTO v_deel_key, v_ins_discipine_key, v_ins_srtgroep_key, v_ins_srtdeel_key FROM ins_v_deel_gegevens i, ins_srtdeel id WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving AND i.ins_srtgroep_upper=UPPER(rec.ins_groep_oms) AND i.ins_srtdeel_key = id.ins_srtdeel_key AND id.ins_srtdeel_code = rec.ins_srtdeel_code AND id.ins_srtdeel_upper=UPPER(rec.ins_srtdeel_oms); EXCEPTION WHEN NO_DATA_FOUND THEN v_deel_key:=-1; END; IF v_deel_key>0 THEN -- Haal taak categorie op indien niet aanwezig maak deze aan. v_errormsg :='Ophalen taakcetegorie '||rec.taak_omschrijving; -- Gaan we eerst check of er onderhoud controles zijn SELECT i.ins_discipline_key, p.ctr_disc_params_ismjob INTO v_taakcat_key, v_taakcat_ismjob FROM ins_tab_discipline i , ctr_disc_params p WHERE i.ins_discipline_module='CTR' AND UPPER(i.ins_discipline_omschrijving) = UPPER(rec.taak_categorie) AND i.ins_discipline_verwijder IS NULL AND p.ctr_ins_discipline_key=i.ins_discipline_key; IF v_taakcat_ismjob=1 THEN v_taak_default_cyclus:=0; ELSE IF LENGTH(rec.taak_default_cyclus)>0 THEN v_taak_default_cyclus:=fac.safe_to_number(rec.taak_default_cyclus); ELSE v_taak_default_cyclus:=0; END IF; END IF; BEGIN SELECT ins_srtcontrole_key INTO v_srtcontrole_key FROM ins_srtcontrole where ins_srtinstallatie_key=v_ins_srtdeel_key AND ins_srtcontrole_niveau=v_ins_srtcontrole_niveau AND UPPER(ins_srtcontrole_omschrijving) = UPPER(SUBSTR(rec.taak_omschrijving,0,60)) AND ins_srtcontrole_periode=v_taak_default_cyclus AND ins_srtcontrole_eenheid=v_default_eenheid AND ins_srtcontrole_mode=1 AND ctr_discipline_key=v_taakcat_key; EXCEPTION WHEN NO_DATA_FOUND THEN -- ins_srtcontrole is er niet dus maken we hem aan, INSERT INTO ins_srtcontrole (ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ins_srtcontrole_periode, ins_srtcontrole_eenheid, ins_srtcontrole_mode, ctr_discipline_key ) VALUES (v_ins_srtdeel_key, v_ins_srtcontrole_niveau, SUBSTR(rec.taak_omschrijving,0,60), v_taak_default_cyclus, v_default_eenheid, 1, v_taakcat_key ) RETURNING ins_srtcontrole_key INTO v_srtcontrole_key; IF v_srtkenmerk_doc>0 THEN INSERT INTO ins_kenmerk ( ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_groep, ins_kenmerk_volgnummer, ins_kenmerk_hint, ins_kenmerk_omschrijving ) VALUES ( v_srtkenmerk_doc, v_srtcontrole_key, 'C', 'D', 0, 10, '', 'Documenten' ); END IF; END; IF LENGTH(rec.taak_cyclus)>0 THEN v_taak_cyclus:=fac.safe_to_number(rec.taak_cyclus); ELSE v_taak_cyclus:= v_taak_default_cyclus; END IF; IF v_taakcat_ismjob=1 THEN v_taak_kosten:=COALESCE(fac.safe_to_number(rec.taak_kosten),0); ELSE v_taak_kosten:=0; END IF; BEGIN SELECT ins_srtcontroledl_xcp_key INTO v_srtcontroledl_xcp_key FROM ins_srtcontroledl_xcp WHERE ins_deel_key=v_deel_key AND ins_srtcontrole_key=v_srtcontrole_key; --AND ins_srtcontroledl_xcp_eenheid=v_eenheid; -- we hebben een xcp record dan updaten we nu alleen de startdatum UPDATE ins_srtcontroledl_xcp SET INS_SRTCONTROLEDL_XCP_STARTDAT=v_taak_datum, ins_srtcontroledl_xcp_periode=v_taak_cyclus, ins_srtcontroledl_xcp_eenheid=v_eenheid WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key; EXCEPTION WHEN NO_DATA_FOUND THEN -- Er is nog geen XCP record dus maken we er 1 met de verwachte startdatum INSERT INTO ins_srtcontroledl_xcp (ins_srtcontrole_key, ins_deel_key, ins_srtcontroledl_xcp_eenheid, ins_srtcontroledl_xcp_kosten, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_startdat) VALUES (v_srtcontrole_key, v_deel_key, v_eenheid, v_taak_kosten, v_taak_cyclus, v_taak_datum); END; ELSE fac.imp_writelog (p_import_key, 'W', 'Object '||rec.ins_deel_omschrijving||' niet gevonden', 'Object niet gevonden'); END IF; END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / -- EXPORTS -- Export View -- Rapportage views CREATE OR REPLACE VIEW plgr_v_vastgoed AS SELECT r.alg_regio_omschrijving, d.alg_district_omschrijving, k.prs_kostenplaats_nr, l.alg_locatie_omschrijving, g.alg_gebouw_code, l.alg_locatie_adres, l.alg_locatie_postcode, l.alg_locatie_plaats, 'TELEFOONNR' telefoonnr, l.alg_locatie_post_adres, 'invoice@plieger.nl' factuur_email, (SELECT p.prs_perslid_naam_friendly FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_v_perslid_fullnames_all p WHERE k.alg_kenmerk_code = 'REGIOMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) regiomanager, (SELECT p.prs_perslid_email FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_perslid p WHERE k.alg_kenmerk_code = 'REGIOMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) regiomanager_email, ' Email adres' email_gebouw, (SELECT fud.fac_usrdata_omschr FROM alg_kenmerk k, ALG_ONRGOEDKENMERK ok, FAC_USRDATA fud WHERE k.alg_kenmerk_code = 'EIGENDOM' AND ok.alg_kenmerk_key = k.alg_kenmerk_key AND ok.alg_onrgoed_key = g.alg_gebouw_key AND ok.alg_onrgoed_niveau = 'G' AND ok.alg_onrgoedkenmerk_waarde = fud.fac_usrdata_key) eigendom, ' Adres_etiket' adres_etiket, (SELECT p.prs_perslid_naam_friendly FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_v_perslid_fullnames_all p WHERE k.alg_kenmerk_code = 'EXPRESSMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) expressmanager, (SELECT p.prs_perslid_email FROM alg_onrgoedkenmerk ak, ALG_KENMERK k, prs_perslid p WHERE k.alg_kenmerk_code = 'EXPRESSMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) expressmanager_email, (SELECT p.prs_perslid_naam_friendly FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_v_perslid_fullnames_all p WHERE k.alg_kenmerk_code = 'SHOWROOMMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.ALG_ONRGOEDKENMERK_WAARDE)) showroommanager, (SELECT p.prs_perslid_email FROM alg_onrgoedkenmerk ak, ALG_KENMERK k, prs_perslid p WHERE k.alg_kenmerk_code = 'SHOWROOMMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) showroommanager_email, (SELECT p.prs_perslid_naam_friendly FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_v_perslid_fullnames_all p WHERE k.alg_kenmerk_code = 'BINNENDIENSTMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) binnendienstmanager, (SELECT p.prs_perslid_email FROM alg_onrgoedkenmerk ak, ALG_KENMERK k, prs_perslid p WHERE k.alg_kenmerk_code = 'BINNENDIENSTMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) binnendienstmmanager_email, (SELECT p.prs_perslid_naam_friendly FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_v_perslid_fullnames_all p WHERE k.alg_kenmerk_code = 'DC-MANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) dcmanager, (SELECT p.prs_perslid_email FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_perslid p WHERE k.alg_kenmerk_code = 'DC-MANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) dcmanager_email, (SELECT p.prs_perslid_naam_friendly FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_v_perslid_fullnames_all p WHERE k.alg_kenmerk_code = 'FACMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) facmanager, (SELECT p.prs_perslid_email FROM alg_onrgoedkenmerk ak, alg_kenmerk k, prs_perslid p WHERE k.alg_kenmerk_code = 'FACMANAGER' AND ak.alg_kenmerk_key = k.alg_kenmerk_key AND ak.alg_onrgoedkenmerk_verwijder IS NULL AND ak.alg_onrgoed_key = l.alg_locatie_key AND p.prs_perslid_key = fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde)) facmanager_email FROM alg_gebouw g, alg_locatie l, alg_district d, alg_regio r, prs_kostenplaats k WHERE l.alg_locatie_key = g.alg_locatie_key AND d.alg_district_key = l.alg_district_key AND r.alg_regio_key = d.alg_regio_key AND k.prs_kostenplaats_key(+) = g.prs_kostenplaats_key AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum> SYSDATE) AND g.alg_gebouw_verwijder IS NULL; -- VIEWS CREATE OR REPLACE VIEW PLGR_V_REGIOMANAGERS ( prs_perslid_key, prs_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_code='REGIOMAN' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND pkl.prs_kenmerklink_niveau='P'; CREATE OR REPLACE VIEW PLGR_V_EXPRESSMANAGERS ( prs_perslid_key, prs_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_code='EXPRESSMAN' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND pkl.prs_kenmerklink_niveau='P'; CREATE OR REPLACE VIEW PLGR_V_SHOWROOMMANAGERS ( prs_perslid_key, prs_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_code='SHOWMAN' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND pkl.prs_kenmerklink_niveau='P'; CREATE OR REPLACE VIEW PLGR_V_BINNENDIENSTMMANAGERS ( prs_perslid_key, prs_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_code='BINNENDIENSTMAN' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND pkl.prs_kenmerklink_niveau='P'; CREATE OR REPLACE VIEW PLGR_V_DCMMANAGERS ( prs_perslid_key, prs_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_code='DCMAN' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND pkl.prs_kenmerklink_niveau='P'; CREATE OR REPLACE VIEW PLGR_V_FACMMANAGERS ( prs_perslid_key, prs_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_code='FACMAN' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND pkl.prs_kenmerklink_niveau='P'; -- Raportage views CREATE OR REPLACE VIEW PLGR_V_CNT_INSIDE AS SELECT locatie_code, cnt_contract_key, cnt_contract_omschrijving, CASE WHEN locatie_code IS NULL THEN 0 ELSE 1 END aanwezig FROM ( SELECT COALESCE((SELECT alg_locatie_code FROM alg_locatie WHERE alg_locatie_key=cp.cnt_alg_plaats_key AND cp.cnt_alg_plaats_code='L'), (SELECT alg_gebouw_code FROM alg_gebouw WHERE alg_gebouw_key=cp.cnt_alg_plaats_key AND cp.cnt_alg_plaats_code='G')) locatie_code, c.cnt_contract_key, c.cnt_contract_omschrijving FROM cnt_contract c, cnt_contract_plaats cp WHERE c.cnt_contract_key = cp.cnt_contract_key(+) UNION ALL SELECT DISTINCT locatie_code, cnt_contract_key, cnt_contract_omschrijving FROM ( SELECT c.cnt_contract_key cnt_contract_key, c.cnt_contract_omschrijving cnt_contract_omschrijving, (SELECT alg_locatie_code FROM alg_locatie WHERE alg_locatie_key=alg.alg_locatie_key) locatie_code, alg.alg_gebouw_code gebouw_code FROM cnt_contract c, cnt_contract_object co, ins_deel i, alg_v_allonrgoed_gegevens alg WHERE c.cnt_contract_key = co.cnt_contract_key(+) AND i.ins_deel_key = co.cnt_ins_deel_key AND alg.alg_ruimte_key = i.ins_alg_ruimte_key ) GROUP BY locatie_code, cnt_contract_key, cnt_contract_omschrijving ORDER BY cnt_contract_key); ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile