1
0

merge_client.db2 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * @ Author: Marshall Telaumbanua
  3. * @ Create Time: 2023-06-07 19:47:45
  4. * @ Usage: CALL MWCONFIG.MERGE_CLIENT(ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE)
  5. */
  6. CREATE OR REPLACE PROCEDURE MERGE_CLIENT (
  7. IN ADAPTOR_ID VARCHAR(256),
  8. IN IDLE_WAIT BIGINT,
  9. IN TIMEOUT SMALLINT,
  10. IN CLOSE_QUEUE VARCHAR(256),
  11. IN CONTROL_QUEUE VARCHAR(256),
  12. IN KEEP_CONN SMALLINT,
  13. IN REUSE_DELAY SMALLINT,
  14. IN NODE VARCHAR(256)
  15. )
  16. BEGIN
  17. DECLARE SQL_STMT VARCHAR(4000);
  18. SET SQL_STMT = 'MERGE INTO MWCONFIG.CLIENT AS T ' ||
  19. 'USING (VALUES (''' || ADAPTOR_ID || ''', ' ||
  20. CASE WHEN IDLE_WAIT IS NOT NULL THEN CAST(IDLE_WAIT AS VARCHAR) ELSE 'NULL' END || ', ' ||
  21. CASE WHEN TIMEOUT IS NOT NULL THEN CAST(TIMEOUT AS VARCHAR) ELSE 'NULL' END || ', ' ||
  22. CASE WHEN CLOSE_QUEUE IS NOT NULL THEN '''' || CLOSE_QUEUE || '''' ELSE 'NULL' END || ', ' ||
  23. CASE WHEN CONTROL_QUEUE IS NOT NULL THEN '''' || CONTROL_QUEUE || '''' ELSE 'NULL' END || ', ' ||
  24. CASE WHEN KEEP_CONN IS NOT NULL THEN CAST(KEEP_CONN AS VARCHAR) ELSE 'NULL' END || ', ' ||
  25. CASE WHEN REUSE_DELAY IS NOT NULL THEN CAST(REUSE_DELAY AS VARCHAR) ELSE 'NULL' END || ', ' ||
  26. CASE WHEN NODE IS NOT NULL THEN '''' || NODE || '''' ELSE 'NULL' END || ')) ' ||
  27. 'AS S (ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE) ' ||
  28. 'ON (T.ADAPTOR_ID = S.ADAPTOR_ID) ' ||
  29. 'WHEN MATCHED THEN ' ||
  30. 'UPDATE SET T.IDLE_WAIT = S.IDLE_WAIT, T.TIMEOUT = S.TIMEOUT, T.CLOSE_QUEUE = S.CLOSE_QUEUE, ' ||
  31. 'T.CONTROL_QUEUE = S.CONTROL_QUEUE, T.KEEP_CONN = S.KEEP_CONN, T.REUSE_DELAY = S.REUSE_DELAY, ' ||
  32. 'T.NODE = S.NODE ' ||
  33. 'WHEN NOT MATCHED THEN ' ||
  34. 'INSERT (ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE) ' ||
  35. 'VALUES (''' || ADAPTOR_ID || ''', ' ||
  36. CASE WHEN IDLE_WAIT IS NOT NULL THEN CAST(IDLE_WAIT AS VARCHAR) ELSE 'NULL' END || ', ' ||
  37. CASE WHEN TIMEOUT IS NOT NULL THEN CAST(TIMEOUT AS VARCHAR) ELSE 'NULL' END || ', ' ||
  38. CASE WHEN CLOSE_QUEUE IS NOT NULL THEN '''' || CLOSE_QUEUE || '''' ELSE 'NULL' END || ', ' ||
  39. CASE WHEN CONTROL_QUEUE IS NOT NULL THEN '''' || CONTROL_QUEUE || '''' ELSE 'NULL' END || ', ' ||
  40. CASE WHEN KEEP_CONN IS NOT NULL THEN CAST(KEEP_CONN AS VARCHAR) ELSE 'NULL' END || ', ' ||
  41. CASE WHEN REUSE_DELAY IS NOT NULL THEN CAST(REUSE_DELAY AS VARCHAR) ELSE 'NULL' END || ', ' ||
  42. CASE WHEN NODE IS NOT NULL THEN '''' || NODE || '''' ELSE 'NULL' END || ')';
  43. PREPARE STMT FROM SQL_STMT;
  44. EXECUTE STMT;
  45. END;
  46. @