Files
Customer/onces/ARAI/ARAI#25591.sql
Peter Koerhuis 3b8d7f1dcc Migratie once-scripts van /branch naar /onces
svn path=/Customer/; revision=21207
2014-04-02 13:57:31 +00:00

162 lines
6.0 KiB
MySQL

-- Customer specific once-script ARAI.
--
-- (c) 2013 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
--
-- Meetwaarden opruim script.
-- Alles meer dan 30 dagen oud wordt verwijderd
-- Omdat Oracle uren (zo niet dagen) bezig zou zijn hiermee via een
-- zogeheten CTAS (Create Table As Select)
SET ECHO ON
SPOOL ARAI25591.lst
SET DEFINE OFF
CREATE TABLE ARAI25591
AS
(SELECT ikd.*
FROM ins_kenmerkdeel ikd, ins_deel idd, ins_kenmerk ik
WHERE ikd.ins_kenmerk_key = ik.ins_kenmerk_key
AND ikd.ins_deel_key = idd.ins_deel_key
AND (ins_kenmerkdeel_aanmaak > SYSDATE - 30 -- Filteren op alle records die moeten *blijven*
OR ik.ins_kenmerk_meetwaarde = 0
OR ik.ins_kenmerk_meetwaarde IS NULL
OR ins_kenmerkdeel_verwijder IS NULL
)
);
ACCEPT doorgaan PROMPT 'Doorgaan: '
DROP TABLE ins_kenmerkdeel PURGE;
ALTER TABLE ARAI25591 RENAME TO ins_kenmerkdeel;
-- Nu weer alle triggers etcetera er op
CREATE INDEX INS_I_INS_KENMERK_DEEL1 ON INS_KENMERKDEEL (INS_DEEL_KEY);
CREATE INDEX INS_I_INS_KENMERK_KENMERK1 ON INS_KENMERKDEEL (INS_KENMERK_KEY);
CREATE INDEX INS_I_INS_KENMERK_KENMERK2 ON INS_KENMERKDEEL (INS_KENMERKDEEL_WAARDE);
CREATE UNIQUE INDEX INS_K_INS_KENMERKDEEL_KEY ON INS_KENMERKDEEL (INS_KENMERKDEEL_KEY);
CREATE UNIQUE INDEX INS_U_INS_KENMERKDEEL ON INS_KENMERKDEEL (INS_KENMERK_KEY, INS_DEEL_KEY, INS_KENMERKDEEL_VERWIJDER);
CREATE OR REPLACE TRIGGER ins_t_ins_kenmerkdeel_b_iu
BEFORE INSERT OR UPDATE ON ins_kenmerkdeel
FOR EACH ROW
BEGIN
IF :new.ins_kenmerkdeel_waarde <> :old.ins_kenmerkdeel_waarde
OR :old.ins_kenmerkdeel_waarde IS NULL
OR :new.ins_kenmerkdeel_waarde IS NULL
THEN
DECLARE
SrtKenmerkOmschr ins_srtkenmerk.ins_srtkenmerk_omschrijving%TYPE;
SrtKenmerkType ins_srtkenmerk.ins_srtkenmerk_kenmerktype%TYPE;
SrtKenmerkLengte ins_srtkenmerk.ins_srtkenmerk_lengte%TYPE;
SrtKenmerkDec ins_srtkenmerk.ins_srtkenmerk_dec%TYPE;
SrtKenmerkNMin ins_srtkenmerk.ins_srtkenmerk_nmin%TYPE;
SrtKenmerkNMax ins_srtkenmerk.ins_srtkenmerk_nmax%TYPE;
KenmerkVerplicht ins_kenmerk.ins_kenmerk_verplicht%TYPE;
NumberWaarde NUMBER(25,5);
FormatMask VARCHAR2(60);
KenmerkDeelWaarde ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
BEGIN
KenmerkDeelWaarde := :new.ins_kenmerkdeel_waarde;
SELECT INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_K.ins_kenmerk_verplicht
INTO SrtKenmerkOmschr,
SrtKenmerkType,
SrtKenmerkLengte,
SrtKenmerkDec,
SrtKenmerkNMin,
SrtKenmerkNMax,
KenmerkVerplicht
FROM ins_srtkenmerk INS_SK, ins_kenmerk INS_K
WHERE INS_SK.ins_srtkenmerk_key = INS_K.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_key = :new.ins_kenmerk_key;
IF KenmerkVerplicht IS NOT NULL AND KenmerkDeelWaarde IS NULL
THEN
raise_application_error(-20004, 'ins_m149,'||SrtKenmerkOmschr);
ELSIF SrtKenmerkType = 'C'
THEN
IF LENGTH(KenmerkDeelWaarde) > SrtKenmerkLengte
THEN
raise_application_error(-20004, 'ins_m143,'||SrtKenmerkOmschr||','||TO_CHAR(SrtKenmerkLengte));
END IF;
ELSIF SrtKenmerkType = 'N'
THEN
IF SrtKenmerkDec IS NULL OR SrtKenmerkDec = 0
THEN
FormatMask := RPAD('9', SrtKenmerkLengte, '9');
ELSE
FormatMask := RPAD('9', SrtKenmerkLengte - SrtKenmerkDec, '9')||
'D'||RPAD('9', SrtKenmerkDec, '9');
END IF;
BEGIN
NumberWaarde := TO_NUMBER(KenmerkDeelWaarde);
EXCEPTION
WHEN OTHERS
THEN FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
raise_application_error(-20004, 'ins_m146,'||SrtKenmerkOmschr||','||FormatMask);
END;
IF (SrtKenmerkNMin IS NOT NULL
AND NumberWaarde < SrtKenmerkNMin)
OR (SrtKenmerkNMax IS NOT NULL
AND NumberWaarde > SrtKenmerkNMax)
THEN
raise_application_error(-20004, 'ins_m145,'||SrtKenmerkOmschr||','|| TO_CHAR(SrtKenmerkNMin)||','|| TO_CHAR(SrtKenmerkNMax));
ELSE
KenmerkDeelWaarde := LTRIM(TO_CHAR(NumberWaarde, FormatMask));
IF INSTR(KenmerkDeelWaarde, '#') <> 0
THEN
FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
raise_application_error(-20004, 'ins_m146,'||SrtKenmerkOmschr||','||FormatMask);
END IF;
END IF;
:new.ins_kenmerkdeel_waarde := KenmerkDeelWaarde;
ELSIF SrtKenmerkType = 'D'
THEN
KenmerkDeelWaarde := TO_CHAR(TO_DATE(KenmerkDeelWaarde,'DD-MM-YY'), 'DD-MM-YYYY');
:new.ins_kenmerkdeel_waarde := KenmerkDeelWaarde;
END IF;
END;
IF :new.ins_kenmerkdeel_key IS NULL THEN SELECT ins_s_ins_kenmerkdeel_key.nextval INTO :new.ins_kenmerkdeel_key FROM DUAL; END IF;
END IF;
END;
/
ALTER TABLE INS_KENMERKDEEL ADD (
CONSTRAINT INS_R_INS_KENMERK_DEEL_KEY1
CHECK (ins_deel_key IS NOT NULL),
CONSTRAINT INS_R_INS_KENMERK_KEY1
CHECK (ins_kenmerk_key IS NOT NULL),
CONSTRAINT INS_K_INS_KENMERKDEEL_KEY
PRIMARY KEY
(INS_KENMERKDEEL_KEY),
CONSTRAINT INS_U_INS_KENMERKDEEL
UNIQUE (INS_KENMERK_KEY, INS_DEEL_KEY, INS_KENMERKDEEL_VERWIJDER));
ALTER TABLE INS_KENMERKDEEL ADD (
CONSTRAINT INS_R_INS_KENMERK_KEY2
FOREIGN KEY (INS_KENMERK_KEY)
REFERENCES INS_KENMERK (INS_KENMERK_KEY));
ALTER TABLE INS_KENMERKDEEL MODIFY INS_KENMERKDEEL_AANMAAK DEFAULT SYSDATE;
ALTER TABLE INS_KENMERKDEEL
ADD CONSTRAINT INS_C_INS_KENMERKDEEL_AANMAAK CHECK(INS_KENMERKDEEL_AANMAAK IS NOT NULL) ;
BEGIN adm.systrackscript('$Workfile: ARAI#25591 $', '$Revision$', 1); END;
/
SPOOL OFF