merge_mapping_group_line.db2 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. * @ Author: Marshall Telaumbanua
  3. * @ Create Time: 2023-06-07 19:52:33
  4. * @ Usage: CALL MWCONFIG.MERGE_MAPPING_GROUP_LINE(MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ)
  5. */
  6. CREATE OR REPLACE PROCEDURE MERGE_MAPPING_GROUP_LINE (
  7. IN MAPPING_ID VARCHAR(256),
  8. IN MAPPING_GROUP_ID BIGINT,
  9. IN NAME VARCHAR(256),
  10. IN TEXT CLOB,
  11. IN SEQ INTEGER
  12. )
  13. BEGIN
  14. DECLARE SQL_STMT VARCHAR(10000);
  15. SET SQL_STMT = 'MERGE INTO MWCONFIG.MAPPING_GROUP_LINE AS T ' ||
  16. 'USING (VALUES (''' || MAPPING_ID || ''', ' || MAPPING_GROUP_ID || ', ''' || NAME || ''', ''' || TEXT || ''', ' ||
  17. CASE
  18. WHEN SEQ IS NULL THEN 'NULL'
  19. ELSE CAST(SEQ AS VARCHAR)
  20. END || ')) AS S (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) ' ||
  21. 'ON (T.MAPPING_ID = S.MAPPING_ID AND T.MAPPING_GROUP_ID = S.MAPPING_GROUP_ID AND T.NAME = S.NAME) ' ||
  22. 'WHEN MATCHED THEN ' ||
  23. 'UPDATE SET ' ||
  24. 'T.TEXT = S.TEXT, ' ||
  25. 'T.SEQ = S.SEQ ' ||
  26. 'WHEN NOT MATCHED THEN ' ||
  27. 'INSERT (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) ' ||
  28. 'VALUES (S.MAPPING_ID, S.MAPPING_GROUP_ID, S.NAME, S.TEXT, S.SEQ)';
  29. PREPARE STMT FROM SQL_STMT;
  30. EXECUTE STMT;
  31. END
  32. @