74 lines
2.3 KiB
Plaintext
74 lines
2.3 KiB
Plaintext
#ifdef CAD // 22-05-1998 KTH
|
|
/*
|
|
* $Revision$
|
|
* $Id$
|
|
*/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY cad
|
|
AS
|
|
PROCEDURE refreshlegenda (themakey IN NUMBER, reinit IN NUMBER)
|
|
AS
|
|
vname cad_thema.cad_thema_view%TYPE;
|
|
lkey cad_thema.cad_legenda_key%TYPE;
|
|
tomschrijving cad_thema.cad_thema_omschrijving%TYPE;
|
|
sql_stmt VARCHAR2 (1000);
|
|
newlegenda BOOLEAN := FALSE;
|
|
BEGIN
|
|
BEGIN
|
|
-- Welke domein en welke legenda?
|
|
SELECT cad_thema_view, cad_legenda_key, cad_thema_omschrijving
|
|
INTO vname, lkey, tomschrijving
|
|
FROM cad_thema
|
|
WHERE cad_thema_key = themakey;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
newlegenda := TRUE;
|
|
END;
|
|
|
|
|
|
IF newlegenda OR lkey IS NULL
|
|
THEN
|
|
-- nieuwe legenda
|
|
INSERT INTO cad_legenda (cad_legenda_omschrijving, cad_legenda_discreet)
|
|
VALUES (tomschrijving, 1)
|
|
RETURNING cad_legenda_key
|
|
INTO lkey;
|
|
|
|
-- gebruiken bij dit thema
|
|
UPDATE cad_thema
|
|
SET cad_legenda_key = lkey
|
|
WHERE cad_thema_key = themakey;
|
|
END IF;
|
|
|
|
sql_stmt :=
|
|
'INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) '
|
|
|| 'SELECT DISTINCT '
|
|
|| TO_CHAR (lkey)
|
|
|| ', waarde, '
|
|
|| 'TO_CHAR(DBMS_UTILITY.get_hash_value (waarde, 0, POWER (2, 24)), ''0XXXXX'')'
|
|
|| ', REPLACE(waarde, ''*'', '''')'
|
|
|| ' FROM '
|
|
|| vname
|
|
|| ' thv WHERE waarde IS NOT NULL';
|
|
|
|
DBMS_OUTPUT.put_line (sql_stmt);
|
|
|
|
IF reinit <> 1
|
|
THEN
|
|
sql_stmt :=
|
|
sql_stmt || ' AND NOT EXISTS '
|
|
|| ' (SELECT cl.cad_legendawaarde_value FROM cad_legendawaarde cl WHERE cl.cad_legendawaarde_value = thv.waarde AND cl.cad_legenda_key = '
|
|
|| TO_CHAR (lkey)
|
|
|| ')';
|
|
END IF;
|
|
|
|
EXECUTE IMMEDIATE sql_stmt;
|
|
END;
|
|
END cad;
|
|
/
|
|
REGISTERRUN('$Workfile: CAD_PAC.SRC $','$Revision$')
|
|
|
|
#endif // CAD
|
|
|