merge_param_map.db2 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. --#SET TERMINATOR @
  2. CREATE OR REPLACE PROCEDURE MWCONFIG.MERGE_PARAM_MAP (
  3. IN P_GROUP VARCHAR(256),
  4. IN P_NAME VARCHAR(256),
  5. IN P_VALUE VARCHAR(1024),
  6. IN P_SEQ INT DEFAULT NULL,
  7. IN P_DESCRIPTION VARCHAR(256) DEFAULT NULL
  8. )
  9. LANGUAGE SQL
  10. BEGIN
  11. DECLARE SQL_STMT VARCHAR(10000);
  12. SET SQL_STMT =
  13. 'MERGE INTO MWCONFIG.PARAM_MAP AS T ' ||
  14. 'USING (VALUES (' ||
  15. CASE
  16. WHEN P_GROUP IS NULL THEN 'NULL'
  17. ELSE '''' || REPLACE(P_GROUP, '''', '''''') || ''''
  18. END || ', ' ||
  19. CASE
  20. WHEN P_NAME IS NULL THEN 'NULL'
  21. ELSE '''' || REPLACE(P_NAME, '''', '''''') || ''''
  22. END || ', ' ||
  23. CASE
  24. WHEN P_VALUE IS NULL THEN 'NULL'
  25. ELSE '''' || REPLACE(P_VALUE, '''', '''''') || ''''
  26. END || ', ' ||
  27. CASE
  28. WHEN P_SEQ IS NULL THEN 'NULL'
  29. ELSE CHAR(P_SEQ)
  30. END || ', ' ||
  31. CASE
  32. WHEN P_DESCRIPTION IS NULL THEN 'NULL'
  33. ELSE '''' || REPLACE(P_DESCRIPTION, '''', '''''') || ''''
  34. END ||
  35. ')) AS S ("GROUP", "NAME", "VALUE", "SEQ", "DESCRIPTION") ' ||
  36. 'ON (T."GROUP" = S."GROUP" AND T."NAME" = S."NAME") ' ||
  37. 'WHEN MATCHED THEN ' ||
  38. ' UPDATE SET ' ||
  39. ' T."VALUE" = S."VALUE", ' ||
  40. ' T."SEQ" = S."SEQ", ' ||
  41. ' T."DESCRIPTION" = S."DESCRIPTION", ' ||
  42. ' T.MODIFIED_BY = CURRENT_USER, ' ||
  43. ' T."TIMESTAMP" = CURRENT_TIMESTAMP ' ||
  44. 'WHEN NOT MATCHED THEN ' ||
  45. ' INSERT ("GROUP", "NAME", "VALUE", "SEQ", "DESCRIPTION", MODIFIED_BY, "TIMESTAMP") ' ||
  46. ' VALUES (S."GROUP", S."NAME", S."VALUE", S."SEQ", S."DESCRIPTION", CURRENT_USER, CURRENT_TIMESTAMP)';
  47. EXECUTE IMMEDIATE SQL_STMT;
  48. END
  49. @