merge_rpg_call_arg.db2 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. * @ Author: Marshall Telaumbanua
  3. * @ Create Time: 2023-06-07 19:52:33
  4. * @ Usage: CALL MWCONFIG.MERGE_RPG_CALL_ARG(RPG_CALL_ID, ID, NAME, TYPE, LENGTH)
  5. */
  6. CREATE OR REPLACE PROCEDURE MERGE_RPG_CALL_ARG (
  7. IN RPG_CALL_ID VARCHAR(256),
  8. IN ID INTEGER,
  9. IN NAME VARCHAR(256),
  10. IN TYPE VARCHAR(64),
  11. IN LENGTH INTEGER,
  12. IN MODIFIED_BY VARCHAR(64) DEFAULT CURRENT_USER,
  13. IN TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  14. )
  15. LANGUAGE SQL
  16. BEGIN
  17. DECLARE SQL_STMT VARCHAR(10000);
  18. SET SQL_STMT = 'MERGE INTO MWCONFIG.RPG_CALL_ARG AS T ' ||
  19. 'USING (VALUES (''' || RPG_CALL_ID || ''', ' || ID || ', ''' || NAME || ''', ''' || TYPE || ''', ' || LENGTH || ')) AS S (RPG_CALL_ID, ID, NAME, TYPE, LENGTH) ' ||
  20. 'ON (T.RPG_CALL_ID = S.RPG_CALL_ID AND T.ID = S.ID) ' ||
  21. 'WHEN MATCHED THEN ' ||
  22. ' UPDATE SET ' ||
  23. ' T.NAME = S.NAME, ' ||
  24. ' T.TYPE = S.TYPE, ' ||
  25. ' T.LENGTH = S.LENGTH ' ||
  26. 'WHEN NOT MATCHED THEN ' ||
  27. ' INSERT (RPG_CALL_ID, ID, NAME, TYPE, LENGTH) ' ||
  28. ' VALUES (S.RPG_CALL_ID, S.ID, S.NAME, S.TYPE, S.LENGTH)';
  29. PREPARE STMT FROM SQL_STMT;
  30. EXECUTE STMT;
  31. END
  32. @