CALCUPGARDE.sql 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. DROP PROCEDURE IF EXISTS `CALCUPGARDE`;
  2. delimiter ;;
  3. CREATE PROCEDURE `CALCUPGARDE`(IN `PLAYER` INT)
  4. BEGIN
  5. DECLARE
  6. MLAYER,
  7. MCOUNT,
  8. MCOUNT1,
  9. MCOUNT2 INT;
  10. SET MLAYER := PLAYER;
  11. SELECT
  12. COUNT(*) INTO MCOUNT
  13. FROM
  14. AR_BS_BONUS_103_CALC T
  15. WHERE
  16. T.LAYER = MLAYER
  17. AND USER_TYPE10 = 10
  18. AND USER_TYPE = 0;
  19. IF
  20. ( MCOUNT > 0 ) THEN
  21. BREAKLABLE :
  22. WHILE
  23. MLAYER > 0 DO
  24. SELECT
  25. COUNT(*) INTO MCOUNT1
  26. FROM
  27. AR_BS_BONUS_103_CALC T1
  28. WHERE
  29. T1.USER_TYPE10 = 10
  30. AND T1.LAYER = MLAYER - 1;
  31. UPDATE AR_BS_BONUS_103_CALC T1
  32. INNER JOIN ( SELECT INTRODUCER_ID FROM AR_BS_BONUS_103_CALC WHERE LAYER = MLAYER AND USER_TYPE10 = 10 GROUP BY INTRODUCER_ID ) T2 ON T1.USER_ID = T2.INTRODUCER_ID
  33. AND T1.USER_TYPE10 = 0
  34. AND T1.LAYER = MLAYER - 1
  35. SET T1.USER_TYPE10 = 10,
  36. T1.USER_TYPE = 10;
  37. SELECT
  38. COUNT(*) INTO MCOUNT2
  39. FROM
  40. AR_BS_BONUS_103_CALC T1
  41. WHERE
  42. T1.USER_TYPE10 = 10
  43. AND T1.LAYER = MLAYER - 1;
  44. IF
  45. ( MCOUNT1 = MCOUNT2 ) THEN
  46. LEAVE BREAKLABLE;
  47. END IF;
  48. SET MLAYER := MLAYER - 1;
  49. END WHILE;
  50. END IF;
  51. END
  52. ;;