CALC20_0.sql 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. DROP PROCEDURE IF EXISTS `CALC20_0`;
  2. delimiter ;;
  3. CREATE PROCEDURE `CALC20_0`(IN PLAYER INT,IN `PCPID` INT)
  4. BEGIN
  5. DECLARE
  6. FLAG INT DEFAULT 0;
  7. DECLARE
  8. MUSERID,
  9. MMAXUSERID VARCHAR ( 50 );
  10. DECLARE
  11. MGPV DECIMAL ( 10, 2 );
  12. DECLARE
  13. MC CURSOR FOR SELECT
  14. C.USER_ID
  15. FROM
  16. AR_BS_BONUS_103_CALC_NET C
  17. WHERE
  18. C.DIRECTLY_UNDER >= 2
  19. AND C.USER_TYPE = 0
  20. AND LAYER = PLAYER;
  21. DECLARE
  22. CONTINUE HANDLER FOR NOT FOUND
  23. SET FLAG = 1;-- 打开游标
  24. OPEN MC;-- 获取结果
  25. L2 :
  26. LOOP
  27. FETCH MC INTO MUSERID;
  28. IF
  29. FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
  30. LEAVE L2;
  31. END IF;-- 这里是为了显示获取结果
  32. SELECT
  33. MIN( GPV ) INTO MGPV
  34. FROM
  35. AR_BS_BONUS_103_CALC_NET C
  36. WHERE
  37. C.INTRODUCER_ID = MUSERID
  38. AND C.USER_TYPE >= 10;
  39. SELECT
  40. MAX( USER_ID ) INTO MMAXUSERID
  41. FROM
  42. AR_BS_BONUS_103_CALC_NET C
  43. WHERE
  44. C.INTRODUCER_ID = MUSERID
  45. AND C.GPV = MGPV;
  46. UPDATE AR_BS_BONUS_103_CALC_NET C
  47. SET C.USER_TYPE = 20,
  48. C.GPV = MGPV
  49. WHERE
  50. USER_ID = MUSERID;
  51. UPDATE AR_BS_BONUS_103_CALC_NET C
  52. SET C.GPV = 0
  53. WHERE
  54. USER_ID = MMAXUSERID;-- 关闭游标
  55. INSERT INTO AR_CALC_BONUS_BS_DETAIL_GPV(USER_ID,INTRODUCER_ID,GPV,PERIOD_NUM)
  56. VALUES(MMAXUSERID,MUSERID,MGPV,PCPID);
  57. END LOOP;
  58. CLOSE MC;
  59. END
  60. ;;