185 lines
5.7 KiB
SQL
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
|