151 lines
5.2 KiB
SQL
151 lines
5.2 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- NOUR#84364 Periodieke taken geeft Aiai
|
|
-- Opschonen objecten van vervallen locaties
|
|
--
|
|
DEFINE thisfile = 'NOUR#84364_2.SQL'
|
|
DEFINE dbuser = '^NOUR'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
|
|
SELECT adm.getscriptspoolfile ('&thisfile') AS fcltlogfile FROM DUAL;
|
|
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
|
|
SELECT adm.checkscriptcust ('&dbuser') AS fcltcusterr FROM DUAL;
|
|
|
|
WHENEVER SQLERROR CONTINUE;
|
|
PROMPT &fcltcusterr
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
-- opruimen poorten
|
|
-- Alle kenmerken bij deze objecten verwijderen
|
|
DELETE ins_kenmerkdeel kd
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND kd.ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
-- Tracking verwijderen van deze objecten
|
|
DELETE fac_tracking tr
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND tr.fac_tracking_refkey = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL)
|
|
AND EXISTS
|
|
(SELECT sn.fac_srtnotificatie_key
|
|
FROM fac_srtnotificatie sn
|
|
WHERE sn.fac_srtnotificatie_xmlnode = 'deel'
|
|
AND tr.fac_srtnotificatie_key = sn.fac_srtnotificatie_key);
|
|
|
|
-- Meldingen met een relatie naar het object
|
|
DELETE mld_melding_object m
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND m.ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
-- Het object is een child van een ander object, deze verwijderen we eerst
|
|
DELETE ins_deel dc
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND dc.ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL)
|
|
AND EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND dc.ins_deel_parent_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
-- Het object is een parent van een ander object, deze relatie wordt verwijderd
|
|
UPDATE ins_deel dc
|
|
SET dc.ins_deel_parent_key = NULL
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND dc.ins_deel_parent_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
-- Het object is uitgegeven, deze uitgifte verwijderen we
|
|
DELETE ins_deel_uitgifte u
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND u.ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
-- Periodieke taken op deze objecten verwijderen
|
|
DELETE ins_deelsrtcontrole sk
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND sk.ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
-- er zijn reserveringen op deze objecten die we moeten verwijderen
|
|
DELETE res_rsv_deel rsv
|
|
WHERE rsv.res_deel_key IN
|
|
(SELECT rd.res_deel_key
|
|
FROM res_deel rd
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND rd.res_ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL));
|
|
|
|
-- daarna kunnen we het reserveerbare object verwijderen
|
|
DELETE res_deel rd
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND rd.res_ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
-- geen notities bij deze objecten
|
|
-- geen ins deel koppelingen voor deze objectsoorten
|
|
|
|
-- Objecten zelf verwijderen
|
|
DELETE ins_deel d
|
|
WHERE EXISTS
|
|
(SELECT i.ins_deel_key
|
|
FROM ins_deel i, alg_locatie l
|
|
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND d.ins_deel_key = i.ins_deel_key
|
|
AND alg_locatie_verwijder IS NOT NULL);
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
|
|
BEGIN
|
|
adm.systrackscriptId ('$Id$', 1);
|
|
END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile |