Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.80 KB | None | 0 0
  1. CREATE DEFINER=`blisstechindo22`@`%` PROCEDURE `Default_Client_Upsert`(
  2. IN `_ClientID` CHAR(4),
  3. IN `_FirstName` VARCHAR(32),
  4. IN `_MiddleName` VARCHAR(64),
  5. IN `_LastName` VARCHAR(32),
  6. IN `_Phone` VARCHAR(16),
  7. IN `_Email` VARCHAR(64),
  8. IN `_Password` VARCHAR(150),
  9. IN `_Address` VARCHAR(64),
  10. IN `_AdminNote` VARCHAR(255),
  11. IN `_UUID` VARCHAR(255),
  12. IN `ShopID` CHAR(4),
  13. IN `_UserID` CHAR(4))
  14. BEGIN
  15. # SET HANDLING ON ERROR DUPLICATE ID
  16. DECLARE CONTINUE HANDLER FOR 1062
  17. BEGIN
  18. # SET UPSERT STATUS & UPSERT MESSAGE WHEN ERROR DUPLICATE ID
  19. SET @UPSERT_STATUS = 0;
  20. SET @UPSERT_MESSAGE = CONCAT('duplicate ID found');
  21. INSERT INTO DuplicateIDLog
  22. VALUES (UUID(),'Client',@ClientID, @TRY, NOW());
  23. END;
  24.  
  25. # DECLARE EXIT HANDLER FOR SQLEXCEPTION
  26. DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
  27. BEGIN
  28. # SET STATUS & ERROR MESSAGE
  29. SET @UPSERT_STATUS = 0;
  30. GET DIAGNOSTICS CONDITION 1
  31. @UPSERT_MESSAGE = MESSAGE_TEXT;
  32. CALL TransactionRollBack();
  33. END;
  34.  
  35. # START UPSERT TRANSACTION
  36. CALL TransactionStart();
  37. # REDECLARE PARAMETER
  38. SET @ClientID = _ClientID;
  39. SET @FirstName = _FirstName;
  40. SET @MiddleName = _MiddleName;
  41. SET @LastName = _LastName;
  42. SET @`Phone` = `_Phone`;
  43. SET @Email = _Email;
  44. SET @`Password` = `_Password`;
  45. SET @Address = _Address;
  46. SET @AdminNote = _AdminNote;
  47. SET @UUID = _UUID;
  48. SET @ShopID = ShopID;
  49. SET @NEWDATA = NULL;
  50. SET @UserID = `_UserID`;
  51. SET @TABLEID = "E2Q6";
  52. SET @PKEY = "ClientID";
  53. SET @RESULTORIGINDATA = "";
  54.  
  55. # MAKE DECISION THIS IS INSERT OR UPDATE ACTION
  56. IF(@ClientID IS NULL OR @ClientID = '') THEN
  57. # START INSERT SECTION
  58. SET @ACTIONTYPE = 'insert';
  59. SET @TRY = 0;
  60. SET @MAX_TRY = GetMaxTry();
  61. # TRY LOOP UNTIL SUCCESSFULLY INSERTED NEW ROW
  62. # TO PREVENT DUPLICATE ID CODE
  63. INSERT_LOOP : WHILE @TRY < @MAX_TRY DO
  64. SET @ClientID = (SELECT RandomCode());
  65. SET @UPSERT_STATUS = 1;
  66. # TRY INSERT NEW ROW
  67. INSERT IGNORE INTO `Client`
  68. (ClientID,
  69. FirstName,
  70. MiddleName,
  71. LastName,
  72. Phone,
  73. Email,
  74. `Password`,
  75. Address,
  76. UUID,
  77. AdminNote,
  78. Created_at)
  79. VALUES
  80. (@ClientID,
  81. @FirstName,
  82. @MiddleName,
  83. @LastName,
  84. @Phone,
  85. @Email,
  86. @`Password`,
  87. @Address,
  88. @UUID,
  89. @AdminNote,
  90. NOW());
  91.  
  92. SET @TRY = @TRY + 1;
  93. # CHECK IF INSERT SUCCESS
  94. IF @UPSERT_STATUS = 1 THEN
  95. # SET RESULT MESSAGE WHEN INSERT SUCCESS
  96. SET @UPSERT_MESSAGE = 'insert success';
  97. # BREAK TRY LOOP
  98. LEAVE INSERT_LOOP;
  99. END IF;
  100. END WHILE;
  101. # END INSERT SECTION
  102. ELSE
  103. # START UPDATE SECTION
  104. SET @ACTIONTYPE = 'update';
  105. # SET ORIGIN DATA BEFORE UPDATE
  106. CALL GetOriginData(@TABLEID,@PKEY,@ClientID);
  107. # EXECUTE QUERY
  108. PREPARE STMT FROM @QRYORIGINDATA;
  109. EXECUTE STMT;
  110. DEALLOCATE PREPARE STMT;
  111. #SET NEWDATA FOR USERACTIVITY LOG
  112. SET @NEWDATA = CONCAT_WS("#~",
  113. COALESCE(@ClientID,"NULL"),
  114. COALESCE(@FirstName,"NULL"),
  115. COALESCE(@MiddleName,"NULL"),
  116. COALESCE(@LastName,"NULL"),
  117. COALESCE(@Phone,"NULL"),
  118. COALESCE(@Email,"NULL"),
  119. COALESCE(@`Password`,"NULL"),
  120. COALESCE(@Address,"NULL"),
  121. COALESCE(@Lang,"NULL"),
  122. COALESCE(@UUID,"NULL"),
  123. COALESCE(@AdminNote,"NULL"),
  124. COALESCE(@LastLogin,"NULL"),
  125. NULL,
  126. NOW(),
  127. NULL);
  128. # EXECUTE UPDATE
  129. UPDATE `Client` C
  130. SET
  131. C.FirstName = COALESCE(@FirstName,C.FirstName),
  132. C.MiddleName = COALESCE(@MiddleName,C.MiddleName),
  133. C.LastName = COALESCE(@LastName,C.LastName),
  134. C.Phone = COALESCE(@Phone,C.Phone),
  135. C.Email = COALESCE(@Email,C.Email),
  136. C.`Password` = COALESCE(@`Password`,C.`Password`),
  137. C.Address = COALESCE(@Address,C.Address),
  138. C.AdminNote = COALESCE(@AdminNote,C.AdminNote),
  139. C.UUID = COALESCE(@UUID, C.UUID),
  140. C.Updated_at = NOW()
  141. WHERE C.ClientID = @ClientID;
  142. # SET RESULT STATUS & MESSAGE WHEN UPDATE SUCCESS
  143. SET @UPSERT_STATUS = 1;
  144. SET @UPSERT_MESSAGE = 'update success';
  145. # END UPDATE SECTION
  146. END IF;
  147. # INSERT USER ACTIVITY
  148. CALL Default_UserActivity_Upsert(@UserID,@ACTIONTYPE,@TABLEID,@ClientID,@RESULTORIGINDATA,@NEWDATA,@PKEY,@UPSERT_STATUS);
  149. # COMMIT TRANSACTION IF NO ERROR
  150. CALL TransactionCommit();
  151. # SELECT OUTPUT ROW
  152. SELECT @UPSERT_STATUS AS `STATUS`, @UPSERT_MESSAGE AS `MESSAGE`, @ClientID AS `ROW_ID`;
  153. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement