Files
Database/CAD/CAD_PAC.SRC
Jos Groot Lipman 011a3d30c2 FSN#25871 refreshlegenda functie tikfout
svn path=/Database/trunk/; revision=19034
2013-09-10 07:26:28 +00:00

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