75 lines
2.5 KiB
Plaintext
75 lines
2.5 KiB
Plaintext
#ifdef ALG
|
|
/*
|
|
* $Revision$
|
|
* $Id$
|
|
*/
|
|
|
|
CREATE OR REPLACE PACKAGE alg
|
|
AS
|
|
PROCEDURE upsertkenmerk (p_kenmerk_key IN NUMBER,
|
|
p_alg_key IN NUMBER,
|
|
p_waarde IN VARCHAR2);
|
|
END alg;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY alg
|
|
AS
|
|
-- Er wordt nu niet getrackt (wat eigenlijk niet zo goed is)
|
|
PROCEDURE upsertkenmerk (p_kenmerk_key IN NUMBER,
|
|
p_alg_key IN NUMBER,
|
|
p_waarde IN VARCHAR2)
|
|
AS
|
|
v_count NUMBER;
|
|
v_niveau VARCHAR2 (1);
|
|
BEGIN
|
|
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt opgeslagen
|
|
SELECT alg_kenmerk_niveau
|
|
INTO v_niveau
|
|
FROM alg_kenmerk
|
|
WHERE alg_kenmerk_key = p_kenmerk_key;
|
|
|
|
-- Is er al een actuele waarde?
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM alg_onrgoedkenmerk
|
|
WHERE alg_onrgoed_key = p_alg_key
|
|
AND alg_kenmerk_key = p_kenmerk_key
|
|
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
|
|
|
IF v_count = 1
|
|
THEN
|
|
IF p_waarde IS NULL
|
|
THEN
|
|
-- Wissen bestaande waarde
|
|
DELETE alg_onrgoedkenmerk
|
|
WHERE alg_onrgoed_key = p_alg_key
|
|
AND alg_kenmerk_key = p_kenmerk_key
|
|
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
|
ELSE
|
|
-- Bijwerken bestaande waarde
|
|
UPDATE alg_onrgoedkenmerk
|
|
SET alg_onrgoedkenmerk_waarde = p_waarde
|
|
WHERE alg_onrgoed_key = p_alg_key
|
|
AND alg_kenmerk_key = p_kenmerk_key
|
|
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
|
END IF;
|
|
ELSE
|
|
IF p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL
|
|
THEN
|
|
-- Registreren waarde
|
|
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
|
|
alg_onrgoed_key,
|
|
alg_onrgoed_niveau,
|
|
alg_onrgoedkenmerk_waarde)
|
|
VALUES (p_kenmerk_key,
|
|
p_alg_key,
|
|
v_niveau,
|
|
p_waarde);
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END alg;
|
|
/
|
|
REGISTERRUN('$Id$')
|
|
#endif // ALG
|