FCLT#58249 res_ruimte_syncstate afsplitsen naar eigen tabel tegen datapump problemen

svn path=/Database/trunk/; revision=43326
This commit is contained in:
Erik Groener
2019-07-11 08:51:11 +00:00
parent 259be10ba4
commit 849ea9b935
3 changed files with 64 additions and 22 deletions

View File

@@ -3244,7 +3244,7 @@ AS
WHERE alg_kenmerk_upper = UPPER (kw) WHERE alg_kenmerk_upper = UPPER (kw)
AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_verwijder IS NULL
AND alg_kenmerk_niveau = 'R' AND alg_kenmerk_niveau = 'R'
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)! ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT alg_kenmerk_key SELECT alg_kenmerk_key
INTO v_kenmerk_key INTO v_kenmerk_key
@@ -3252,7 +3252,7 @@ AS
WHERE alg_kenmerk_key = fac.safe_to_number (kw) WHERE alg_kenmerk_key = fac.safe_to_number (kw)
AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_verwijder IS NULL
AND alg_kenmerk_niveau = 'R' AND alg_kenmerk_niveau = 'R'
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF; END IF;
RETURN v_kenmerk_key; RETURN v_kenmerk_key;
@@ -7422,13 +7422,13 @@ IS
INTO v_srtkenmerk_key INTO v_srtkenmerk_key
FROM ins_v_aanwezigsrtkenmerk FROM ins_v_aanwezigsrtkenmerk
WHERE ins_srtkenmerk_upper = UPPER (v_kw) WHERE ins_srtkenmerk_upper = UPPER (v_kw)
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)! ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT ins_srtkenmerk_key SELECT ins_srtkenmerk_key
INTO v_srtkenmerk_key INTO v_srtkenmerk_key
FROM ins_v_aanwezigsrtkenmerk FROM ins_v_aanwezigsrtkenmerk
WHERE ins_srtkenmerk_key = fac.safe_to_number (v_kw) WHERE ins_srtkenmerk_key = fac.safe_to_number (v_kw)
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF; END IF;
RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep); RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep);
@@ -18445,14 +18445,14 @@ AS
FROM cnt_srtkenmerk FROM cnt_srtkenmerk
WHERE cnt_srtkenmerk_verwijder IS NULL WHERE cnt_srtkenmerk_verwijder IS NULL
AND cnt_srtkenmerk_upper = UPPER (kw) AND cnt_srtkenmerk_upper = UPPER (kw)
AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)! ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT cnt_srtkenmerk_key SELECT cnt_srtkenmerk_key
INTO v_srtkenmerk_key INTO v_srtkenmerk_key
FROM cnt_srtkenmerk FROM cnt_srtkenmerk
WHERE cnt_srtkenmerk_verwijder IS NULL WHERE cnt_srtkenmerk_verwijder IS NULL
AND cnt_srtkenmerk_key = fac.safe_to_number (kw) AND cnt_srtkenmerk_key = fac.safe_to_number (kw)
AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF; END IF;
RETURN v_srtkenmerk_key; RETURN v_srtkenmerk_key;
@@ -20492,6 +20492,7 @@ AS
v_res_ruimte_key res_ruimte.res_ruimte_key%TYPE; v_res_ruimte_key res_ruimte.res_ruimte_key%TYPE;
v_syncstate VARCHAR2(4000); v_syncstate VARCHAR2(4000);
v_len NUMBER; v_len NUMBER;
v_sync NUMBER;
CURSOR c1 CURSOR c1
IS IS
@@ -20512,11 +20513,28 @@ BEGIN
FROM fac_import FROM fac_import
WHERE fac_import_key = p_import_key; WHERE fac_import_key = p_import_key;
-- Syncstate leegmaken, zodat we 'n append kunnen doen. SELECT r.res_ruimte_key - COALESCE(s.res_ruimte_key, 0)
UPDATE res_ruimte INTO v_sync
SET res_ruimte_syncstate = NULL FROM res_ruimte r
WHERE res_ruimte_key = v_res_ruimte_key , res_ruimte_sync s
AND res_ruimte_extern_id IS NOT NULL; WHERE r.res_ruimte_key = s.res_ruimte_key(+)
AND r.res_ruimte_extern_id IS NOT NULL
AND r.res_ruimte_key = v_res_ruimte_key;
--
-- v_sync: no_data_found --> niet gevonden, niets doen.
-- 0 --> bestaat in res_ruimte en res_ruimte_sync.
-- >0 --> bestaat alleen in res_ruimte.
IF (v_sync = 0)
THEN
-- Syncstate leegmaken, zodat we 'n append kunnen doen.
UPDATE res_ruimte_sync
SET res_ruimte_syncstate = NULL
WHERE res_ruimte_key = v_res_ruimte_key;
ELSE
-- Voeg een res_ruimte_sync record toe.
INSERT INTO res_ruimte_sync (res_ruimte_key)
VALUES (v_res_ruimte_key);
END IF;
FOR rec1 IN c1 LOOP FOR rec1 IN c1 LOOP
BEGIN BEGIN
@@ -20536,11 +20554,10 @@ BEGIN
-- Stylesheet knipt syncstates langer dan 4000 karakters op in meerdere delen -- Stylesheet knipt syncstates langer dan 4000 karakters op in meerdere delen
-- Hier weer aan elkaar plakken. -- Hier weer aan elkaar plakken.
UPDATE res_ruimte UPDATE res_ruimte_sync
SET res_ruimte_syncstate = res_ruimte_syncstate || TRIM(v_syncstate), SET res_ruimte_syncstate = res_ruimte_syncstate || TRIM(v_syncstate),
res_ruimte_syncdate = SYSDATE res_ruimte_syncdate = SYSDATE
WHERE res_ruimte_key = v_res_ruimte_key WHERE res_ruimte_key = v_res_ruimte_key;
AND res_ruimte_extern_id IS NOT NULL;
END IF; END IF;
END; END;
END LOOP; END LOOP;
@@ -20549,9 +20566,8 @@ BEGIN
v_errormsg := 'Fout bij bepalen lengte syncstate'; v_errormsg := 'Fout bij bepalen lengte syncstate';
SELECT LENGTH(res_ruimte_syncstate) SELECT LENGTH(res_ruimte_syncstate)
INTO v_len INTO v_len
FROM res_ruimte FROM res_ruimte_sync
WHERE res_ruimte_key = v_res_ruimte_key WHERE res_ruimte_key = v_res_ruimte_key;
AND res_ruimte_extern_id IS NOT NULL;
IF (v_len > 4000) IF (v_len > 4000)
THEN THEN
@@ -20560,8 +20576,10 @@ BEGIN
'Lange syncstate, ' || v_len || ' karakters', 'Lange syncstate, ' || v_len || ' karakters',
'res_ruimte_key: ' || v_res_ruimte_key); 'res_ruimte_key: ' || v_res_ruimte_key);
END IF; END IF;
EXCEPTION EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS WHEN OTHERS
THEN THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 1000); oracle_err_mes := SUBSTR (SQLERRM, 1, 1000);

View File

@@ -114,10 +114,6 @@ CREATE_TABLE(res_ruimte,0)
CONSTRAINT res_c_res_status_fo2 CHECK(res_status_fo_key IN (1,2,3,4)), CONSTRAINT res_c_res_status_fo2 CHECK(res_status_fo_key IN (1,2,3,4)),
res_ruimte_extern_id res_ruimte_extern_id
VARCHAR2(256), VARCHAR2(256),
res_ruimte_syncstate
CLOB,
res_ruimte_syncdate
DATE,
res_ruimte_cv res_ruimte_cv
NUMBER(1) NUMBER(1)
DEFAULT 0 DEFAULT 0
@@ -126,6 +122,15 @@ CREATE_TABLE(res_ruimte,0)
CONSTRAINT res_u_res_ruimte_upper UNIQUE(res_ruimte_upper, res_ruimte_verwijder) CONSTRAINT res_u_res_ruimte_upper UNIQUE(res_ruimte_upper, res_ruimte_verwijder)
); );
CREATE_TABLE(res_ruimte_sync,0)
(
res_ruimte_key
NUMBER(10),
res_ruimte_syncstate
CLOB,
res_ruimte_syncdate
DATE
);
CREATE_TABLE(res_alg_ruimte,0) CREATE_TABLE(res_alg_ruimte,0)
( (

View File

@@ -481,6 +481,25 @@ BEGIN
END; END;
/ /
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#58249
CREATE TABLE res_ruimte_sync
(
res_ruimte_key NUMBER(10),
res_ruimte_syncstate CLOB,
res_ruimte_syncdate DATE
);
INSERT INTO res_ruimte_sync
( SELECT res_ruimte_key
, res_ruimte_syncstate
, res_ruimte_syncdate
FROM res_ruimte
WHERE res_ruimte_syncstate IS NOT NULL
OR res_ruimte_syncdate IS NOT NULL
);
ALTER TABLE res_ruimte DROP COLUMN res_ruimte_syncstate;
ALTER TABLE res_ruimte DROP COLUMN res_ruimte_syncdate;
/////////////////////////////////////////////////////////////////////////////////////////// XXXX#nnnnn /////////////////////////////////////////////////////////////////////////////////////////// XXXX#nnnnn