FSN#25871 refreshlegenda functie
svn path=/Database/trunk/; revision=19058
This commit is contained in:
@@ -4,6 +4,10 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
CREATE OR REPLACE PACKAGE cad AS
|
||||
PROCEDURE refreshlegenda (themakey IN NUMBER, reinit IN NUMBER);
|
||||
END cad;
|
||||
/
|
||||
CREATE OR REPLACE PACKAGE BODY cad
|
||||
AS
|
||||
PROCEDURE refreshlegenda (themakey IN NUMBER, reinit IN NUMBER)
|
||||
@@ -39,8 +43,16 @@ AS
|
||||
UPDATE cad_thema
|
||||
SET cad_legenda_key = lkey
|
||||
WHERE cad_thema_key = themakey;
|
||||
ELSE
|
||||
-- bestaande legenda, eventueel wissen
|
||||
IF reinit = 1
|
||||
THEN
|
||||
DELETE FROM cad_legendawaarde WHERE cad_legenda_key = lkey;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
|
||||
|
||||
sql_stmt :=
|
||||
'INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) '
|
||||
|| 'SELECT DISTINCT '
|
||||
@@ -49,20 +61,15 @@ AS
|
||||
|| 'TO_CHAR(DBMS_UTILITY.get_hash_value (waarde, 0, POWER (2, 24)), ''0XXXXX'')'
|
||||
|| ', REPLACE(waarde, ''*'', '''')'
|
||||
|| ' FROM '
|
||||
|| vname
|
||||
|| ' thv WHERE waarde IS NOT NULL';
|
||||
|| vname -- er zit een constraint op cad_thema.cad_thema_view dus relatief SQL-injection safe
|
||||
|| ' thv WHERE REPLACE (waarde, ''*'', '''') IS NOT NULL'
|
||||
|| ' 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)
|
||||
|| ')';
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user