Files
Database/ALG/ALG_PAC.SRC
Jos Groot Lipman de2938b9c2 FSN#27706 $Workfile overal vervangen door $Id
svn path=/Database/trunk/; revision=19574
2013-10-23 07:42:19 +00:00

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