#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