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)
AND alg_kenmerk_verwijder IS NULL
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)!
SELECT alg_kenmerk_key
INTO v_kenmerk_key
@@ -3252,7 +3252,7 @@ AS
WHERE alg_kenmerk_key = fac.safe_to_number (kw)
AND alg_kenmerk_verwijder IS NULL
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;
RETURN v_kenmerk_key;
@@ -7422,13 +7422,13 @@ IS
INTO v_srtkenmerk_key
FROM ins_v_aanwezigsrtkenmerk
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)!
SELECT ins_srtkenmerk_key
INTO v_srtkenmerk_key
FROM ins_v_aanwezigsrtkenmerk
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;
RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep);
@@ -18445,14 +18445,14 @@ AS
FROM cnt_srtkenmerk
WHERE cnt_srtkenmerk_verwijder IS NULL
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)!
SELECT cnt_srtkenmerk_key
INTO v_srtkenmerk_key
FROM cnt_srtkenmerk
WHERE cnt_srtkenmerk_verwijder IS NULL
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;
RETURN v_srtkenmerk_key;
@@ -20492,6 +20492,7 @@ AS
v_res_ruimte_key res_ruimte.res_ruimte_key%TYPE;
v_syncstate VARCHAR2(4000);
v_len NUMBER;
v_sync NUMBER;
CURSOR c1
IS
@@ -20512,11 +20513,28 @@ BEGIN
FROM fac_import
WHERE fac_import_key = p_import_key;
SELECT r.res_ruimte_key - COALESCE(s.res_ruimte_key, 0)
INTO v_sync
FROM res_ruimte r
, res_ruimte_sync s
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
UPDATE res_ruimte_sync
SET res_ruimte_syncstate = NULL
WHERE res_ruimte_key = v_res_ruimte_key
AND res_ruimte_extern_id IS NOT 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
BEGIN
@@ -20536,11 +20554,10 @@ BEGIN
-- Stylesheet knipt syncstates langer dan 4000 karakters op in meerdere delen
-- Hier weer aan elkaar plakken.
UPDATE res_ruimte
UPDATE res_ruimte_sync
SET res_ruimte_syncstate = res_ruimte_syncstate || TRIM(v_syncstate),
res_ruimte_syncdate = SYSDATE
WHERE res_ruimte_key = v_res_ruimte_key
AND res_ruimte_extern_id IS NOT NULL;
WHERE res_ruimte_key = v_res_ruimte_key;
END IF;
END;
END LOOP;
@@ -20549,9 +20566,8 @@ BEGIN
v_errormsg := 'Fout bij bepalen lengte syncstate';
SELECT LENGTH(res_ruimte_syncstate)
INTO v_len
FROM res_ruimte
WHERE res_ruimte_key = v_res_ruimte_key
AND res_ruimte_extern_id IS NOT NULL;
FROM res_ruimte_sync
WHERE res_ruimte_key = v_res_ruimte_key;
IF (v_len > 4000)
THEN
@@ -20560,8 +20576,10 @@ BEGIN
'Lange syncstate, ' || v_len || ' karakters',
'res_ruimte_key: ' || v_res_ruimte_key);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
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)),
res_ruimte_extern_id
VARCHAR2(256),
res_ruimte_syncstate
CLOB,
res_ruimte_syncdate
DATE,
res_ruimte_cv
NUMBER(1)
DEFAULT 0
@@ -126,6 +122,15 @@ CREATE_TABLE(res_ruimte,0)
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)
(

View File

@@ -481,6 +481,25 @@ BEGIN
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