BLOS#68339 -- Oncescript om deze procedure blos_mld_after_inser uit standaard klant-sql alvast vooruit te leveren

svn path=/Customer/; revision=54428
This commit is contained in:
Jos Migo
2022-01-06 19:56:10 +00:00
parent fcd91e4d2a
commit 8d0a05f821

View File

@@ -0,0 +1,115 @@
-- Customer specific once-script voor BLOS
-- $Id$
--
-- Oncescript om procedure blos_mld_after_insert uit SINN.SQL alvast vooruit te leveren.
-- Deze procedure hoort bij hookfunctie om kenmerkveld Clusterlabel (oorspronkelijk) bij de nieuwe melding te vullen.
DEFINE thisfile = 'BLOS#68339_label_mld_hook.SQL'
DEFINE dbuser = '^BLOS'
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 ------
-- Hook functie die na het saven (mld_postsave) van een melding aangeroepen wordt.
CREATE OR REPLACE PROCEDURE blos_mld_after_insert (p_key IN NUMBER)
AS
v_locatie_key NUMBER;
v_kenmerk_waarde_cluster VARCHAR (100);
v_kenmerk_waarde_key NUMBER (10);
v_mld_kenmerkmelding_key NUMBER (10);
v_mld_kenmerkmelding_waarde VARCHAR (100);
v_errormsg VARCHAR2 (100);
BEGIN
v_errormsg := 'Ophalen meldinggegevens';
SELECT m.mld_alg_locatie_key
INTO v_locatie_key
FROM mld_melding m
WHERE mld_melding_key = p_key AND mld_stdmelding_key NOT IN (1) ; -- Niet voor M2M-meldingen
IF v_locatie_key IS NOT NULL
THEN
BEGIN
-- Ophalen waarde Cluster bij Locatie vastgelegd
SELECT ud.fac_usrdata_omschr, ud.fac_usrdata_key
INTO v_kenmerk_waarde_cluster, v_kenmerk_waarde_key
FROM alg_locatie l, alg_onrgoedkenmerk k, alg_kenmerk km, fac_kenmerkdomein kd, fac_usrdata ud
WHERE l.alg_locatie_key = v_locatie_key
AND l.alg_locatie_key = k.alg_onrgoed_key AND alg_onrgoed_niveau = 'L' AND k.alg_kenmerk_key = 1000 -- Clusterlabel (oorspronkelijk)
AND k.alg_kenmerk_key = km.alg_kenmerk_key
AND km.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_kenmerk_waarde_cluster := NULL;
v_kenmerk_waarde_key := NULL;
END;
BEGIN
-- Is het kenmerk al eerder weggeschreven op de melding?
SELECT km.mld_kenmerkmelding_key, km.mld_kenmerkmelding_waarde
INTO v_mld_kenmerkmelding_key, v_mld_kenmerkmelding_waarde
FROM mld_melding m, mld_kenmerkmelding km
WHERE m.mld_melding_key = p_key
AND m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = 221 -- Clusterlabel (oorspronkelijk)
AND km.mld_kenmerkmelding_verwijder IS NULL ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_mld_kenmerkmelding_key := NULL;
END;
-- Toevoegen kenmerk-record als waarde gevuld en er nog geen record is aangemaakt
IF v_kenmerk_waarde_cluster IS NOT NULL AND v_mld_kenmerkmelding_key IS NULL
THEN
BEGIN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (p_key, 221, v_kenmerk_waarde_cluster) ;
END;
END IF;
-- Aanpassen kenmerk-record als de locatie is omgezet op de melding
IF v_kenmerk_waarde_cluster IS NOT NULL AND v_mld_kenmerkmelding_key IS NOT NULL AND v_mld_kenmerkmelding_waarde <> v_kenmerk_waarde_cluster
THEN
BEGIN
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = v_kenmerk_waarde_cluster
WHERE mld_kenmerkmelding_key = v_mld_kenmerkmelding_key;
END;
END IF;
END IF;
END blos_mld_after_insert;
/
------ 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