CALCDELNET.sql 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. DROP PROCEDURE IF EXISTS `CALCDELNET`;
  2. delimiter ;;
  3. CREATE PROCEDURE `CALCDELNET`(IN `PLAYER` INT)
  4. BEGIN
  5. DECLARE
  6. FLAG INT DEFAULT 0;
  7. DECLARE
  8. MUSERID,
  9. MMAXUSERID,
  10. MINTRODUCERID VARCHAR ( 50 );
  11. /*DECLARE
  12. MGPV DECIMAL ( 10, 2 );
  13. DECLARE
  14. DN CURSOR FOR SELECT
  15. USER_ID
  16. FROM
  17. AR_BS_BONUS_103_CALC_NET
  18. WHERE
  19. LAYER = PLAYER
  20. AND USER_TYPE = 0;
  21. DECLARE
  22. CONTINUE HANDLER FOR NOT FOUND
  23. SET FLAG = 1;*/
  24. START TRANSACTION;-- 打开游标
  25. /*OPEN DN;-- 获取结果
  26. L2 :
  27. LOOP
  28. FETCH DN INTO MUSERID;
  29. IF
  30. FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
  31. LEAVE L2;
  32. END IF;-- 查询需要删除会员的推荐人ID
  33. SELECT
  34. T.INTRODUCER_ID INTO MINTRODUCERID
  35. FROM
  36. AR_BS_BONUS_103_CALC_NET T
  37. WHERE
  38. T.USER_ID = MUSERID;-- 更改需要删除会员第一代的推荐人ID以及层数
  39. UPDATE AR_BS_BONUS_103_CALC_NET T
  40. SET T.INTRODUCER_ID = MINTRODUCERID,
  41. T.LAYER = T.LAYER - 1
  42. WHERE
  43. T.INTRODUCER_ID = MUSERID;-- 关闭游标
  44. END LOOP;
  45. CLOSE DN;*/
  46. UPDATE AR_BS_BONUS_103_CALC_NET
  47. SET DELETED = 1
  48. WHERE
  49. LAYER = PLAYER
  50. AND USER_TYPE = 0;
  51. UPDATE AR_BS_BONUS_103_CALC_NET T1
  52. INNER JOIN AR_BS_BONUS_103_CALC_NET T2
  53. ON T1.INTRODUCER_ID = T2.USER_ID AND T1.LAYER = PLAYER+1 AND T2.LAYER = PLAYER AND T2.USER_TYPE = 0
  54. SET T1.INTRODUCER_ID = T2.INTRODUCER_ID,T1.LAYER = PLAYER;
  55. DELETE
  56. FROM
  57. AR_BS_BONUS_103_CALC_NET
  58. WHERE
  59. LAYER = PLAYER
  60. AND USER_TYPE = 0
  61. AND DELETED = 1;
  62. COMMIT;
  63. END
  64. ;;