--
-- $Id$
--
-- Meetwaarden opruim script.
-- Hetzelfde als ARAI#25591 maar dan gewoon met een delete
-- Om regelmatig toe te passen.
-- We verwijderen ze per week om de transacties niet al te groot te maken
-- Daarbij beginnen we een jaar terug, er van uitgaande dat je dit script
-- echt wel eens per jaar draait.
-- Reken op zo'n 5 minuten om 1063733 records terug te brengen tot 287947
-- (2 maand data)

DEFINE thisfile = 'ARAI#37152.sql'
DEFINE dbuser   = '^ARAI'

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 ------

SET SERVEROUTPUT ON SIZE UNLIMITED;

SELECT COUNT(*) FROM ins_kenmerkdeel;

DECLARE
   week      NUMBER (10);
BEGIN
    FOR week IN REVERSE 0 .. 52
      LOOP
        DBMS_OUTPUT.put_line (TO_CHAR(SYSDATE, 'HH24:MI:SS') || ' Week: ' || TO_CHAR (week));
        DELETE
          FROM ins_kenmerkdeel ikd
         WHERE ins_kenmerkdeel_aanmaak < SYSDATE - 30 - 7 * week -- Filteren op alle records die weg moeten
               AND ins_kenmerkdeel_verwijder IS NOT NULL
               AND EXISTS
                     (SELECT 1
                        FROM ins_kenmerk ik, ins_deel idd
                       WHERE     ikd.ins_kenmerk_key = ik.ins_kenmerk_key
                             AND ikd.ins_deel_key = idd.ins_deel_key
                             AND ik.ins_kenmerk_meetwaarde = 1);
        COMMIT;
      END LOOP;
END;
/
SELECT COUNT(*) FROM ins_kenmerkdeel;

------ 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

