Files
Customer/onces/CEVA/CEVA#56862_properties.sql
2020-04-28 09:01:18 +00:00

185 lines
5.7 KiB
SQL

--
-- $Id$
--
-- <<Procedure om objecten om te zetten naar een andere objectsoort>>
--
DEFINE thisfile = 'CEVA#56862_properties.SQL'
DEFINE dbuser = '^CEVA'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
DECLARE
v_errorhint VARCHAR2 (100);
-- Dit is een tijdelijke procedure, om de kenmerken om te zetten van de objecten die reeds eerder al waren omgezet
-- Bij aanvang van het project waren er nauwelijks kenmerken en die wijzigden ook niet van discipline in de toenmalige was-wordt lijst.
-- Dit is in de tijd achterhaald, waardoor nu ook veel kenmerken nog moeten worden omgezet.
-- Onderstaande cursor bepaalt welke kenmerken er moeten omgezet worden en naar welke (nieuwe) kenmerk_keys dat moet.
CURSOR object_properties
IS
SELECT deel_key,
disc_old,
disc_new,
ins_srtkenmerk_key_old,
ins_srtkenmerk_omschrijving_old,
ins_kenmerk_key_old,
(SELECT kk.ins_kenmerk_key
FROM ins_kenmerk kk
WHERE kk.ins_srtinstallatie_key = disc_new
AND kk.ins_srtkenmerk_key = ins_srtkenmerk_key_old
AND kk.ins_kenmerk_verwijder IS NULL)
AS ins_kenmerk_key_new,
ins_kenmerkdeel_key,
ins_kenmerkdeel_waarde
FROM (SELECT y.fac_tracking_refkey AS deel_key,
y.disc_old,
y.disc_new,
sk.ins_srtkenmerk_key AS ins_srtkenmerk_key_old,
sk.ins_srtkenmerk_omschrijving
AS ins_srtkenmerk_omschrijving_old,
kmd.ins_kenmerk_key AS ins_kenmerk_key_old,
kmd.ins_kenmerkdeel_key,
kmd.ins_kenmerkdeel_waarde
FROM (SELECT x.*,
(SELECT sg.ins_discipline_key
FROM ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sd.ins_srtdeel_key = x.property_old)
AS disc_old,
(SELECT sg.ins_discipline_key
FROM ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sd.ins_srtdeel_key = x.property_new)
AS disc_new,
(SELECT sg.ins_srtgroep_key
FROM ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sd.ins_srtdeel_key = x.property_old)
AS srtgroep_old,
(SELECT sg.ins_srtgroep_key
FROM ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sd.ins_srtdeel_key = x.property_new)
AS srtgroep_new,
(SELECT sd.ins_srtdeel_key
FROM ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sd.ins_srtdeel_key = x.property_old)
AS srtdeel_old,
(SELECT sd.ins_srtdeel_key
FROM ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sd.ins_srtdeel_key = x.property_new)
AS srtdeel_new
FROM (SELECT t.fac_tracking_refkey,
SUBSTR (
t.fac_tracking_oms,
33,
INSTR (SUBSTR (t.fac_tracking_oms, 33),
' to ')
- 1)
AS property_old,
(CASE (INSTR (
t.fac_tracking_oms,
'Also identification was changed.'))
WHEN 0
THEN
SUBSTR (
t.fac_tracking_oms,
INSTR (
SUBSTR (t.fac_tracking_oms, 0),
' to ')
+ 4)
ELSE
SUBSTR (
SUBSTR (
fac_tracking_oms,
INSTR (
SUBSTR (t.fac_tracking_oms, 0),
' to ')
+ 4),
0,
INSTR (
SUBSTR (
fac_tracking_oms,
INSTR (
SUBSTR (t.fac_tracking_oms,
0),
' to ')
+ 4),
'.')
- 1)
END)
AS property_new
FROM fac_tracking t
WHERE t.fac_tracking_oms LIKE
'%Object changed from object type%') x) y,
ins_kenmerkdeel kmd,
ins_kenmerk km,
ins_srtkenmerk sk
WHERE y.srtdeel_old NOT IN (41, 42, 43, 44)
AND disc_old <> disc_new
AND kmd.ins_deel_key = y.fac_tracking_refkey
AND kmd.ins_kenmerk_key = km.ins_kenmerk_key
AND sk.ins_srtkenmerk_key = km.ins_srtkenmerk_key);
BEGIN
v_errorhint := 'init';
-- We zetten kenmerken om naar de nieuwe kenmkerken, behorend bij de nieuwe discipline.
FOR rec IN object_properties
LOOP
BEGIN
v_errorhint := 'Omzetten kenmerk_key';
UPDATE ins_kenmerkdeel
SET ins_kenmerk_key = rec.ins_kenmerk_key_new
WHERE ins_kenmerkdeel_key = rec.ins_kenmerkdeel_key
AND rec.ins_kenmerk_key_new IS NOT NULL;
-- We voegen tracking toe, om achteraf te zien bij welke objecten kenmerken zijn omgezet.
fac.trackaction (
'INSUPD',
rec.deel_key,
NULL,
NULL,
'Property changed from kenmerk_key_old '
|| rec.ins_kenmerk_key_old
|| ' to '
|| rec.ins_kenmerk_key_new
|| '. Property: '
|| rec.ins_srtkenmerk_omschrijving_old
|| ', Description: '
|| rec.ins_kenmerkdeel_waarde);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (rec.ins_kenmerkdeel_key);
END;
END LOOP;
END;
/
------ 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