162 lines
6.0 KiB
MySQL
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
|