KLIM#61411 Reshuffelen ICT-objectidentificatie (en vullen Werkplek-kenmerkveld)

svn path=/Customer/; revision=45913
This commit is contained in:
Maarten van der Heide
2020-02-20 10:20:25 +00:00
parent 4902e51f30
commit 697270b671

95
onces/KLIM/KLIM#61411.sql Normal file
View File

@@ -0,0 +1,95 @@
--
-- $Id$
--
-- Customer specific once-script KLIM#61411.SQL.
DEFINE thisfile = 'KLIM#61411.SQL'
DEFINE dbuser = '^KLIM'
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 ------
-- Verwijder vulling van Werkplek-kenmerkveld (key=97) voor ICT-objecten met een
-- '/' in identificatie!
--DELETE FROM ins_kenmerkdeel kd
-- WHERE kd.ins_kenmerkdeel_verwijder IS NULL
-- AND ins_kenmerk_key = 97 -- Werkplek
-- AND EXISTS
-- (SELECT 1
-- FROM ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg
-- WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
-- AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
-- AND sg.ins_discipline_key = 501 -- CMDB
-- AND INSTR (d.ins_deel_omschrijving, '/') > 0
-- AND d.ins_deel_key = kd.ins_deel_key);
UPDATE ins_kenmerkdeel kd
SET kd.ins_kenmerkdeel_verwijder = SYSDATE
WHERE kd.ins_kenmerkdeel_verwijder IS NULL
AND ins_kenmerk_key = 97 -- Werkplek
AND EXISTS
(SELECT 1
FROM ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 501 -- CMDB
AND INSTR (d.ins_deel_omschrijving, '/') > 0
AND d.ins_deel_key = kd.ins_deel_key);
COMMIT;
-- Vul Werkplek-kenmerkveld (key=97) met gedeelte voor '/' uit identificatie!
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
SELECT d.ins_deel_key, 97, SUBSTR (ins_deel_omschrijving, 1, INSTR (d.ins_deel_omschrijving, '/') - 1)
FROM ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 501 -- CMDB
AND INSTR (d.ins_deel_omschrijving, '/') > 0;
COMMIT;
-- Verwijder gedeelte voor '/' uit identificatie en vul aan met voorloopnullen
-- tot 5 posities (als lengte <= 5 posities)!
UPDATE ins_deel d
SET d.ins_deel_omschrijving = SUBSTR ('00000' || SUBSTR (ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving, '/') + 1), -5)
WHERE d.ins_deel_verwijder IS NULL
AND INSTR (d.ins_deel_omschrijving, '/') > 0
AND LENGTH (SUBSTR (ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving, '/') + 1)) <= 5
AND EXISTS
(SELECT 1
FROM ins_srtdeel sd, ins_srtgroep sg
WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 501 -- CMDB
AND sd.ins_srtdeel_key = d.ins_srtdeel_key);
COMMIT;
-- Verwijder gedeelte voor '/' uit identificatie (als lengte > 5 posities)!
UPDATE ins_deel d
SET d.ins_deel_omschrijving = SUBSTR (ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving, '/') + 1)
WHERE d.ins_deel_verwijder IS NULL
AND INSTR (d.ins_deel_omschrijving, '/') > 0
AND LENGTH (SUBSTR (ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving, '/') + 1)) > 5
AND EXISTS
(SELECT 1
FROM ins_srtdeel sd, ins_srtgroep sg
WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 501 -- CMDB
AND sd.ins_srtdeel_key = d.ins_srtdeel_key);
COMMIT;
------ 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