共享奖上拿1.0.sql 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. CREATE DEFINER=`bi`@`%` PROCEDURE `BONUS_GX_UP`( `PRM_PERIOD_NUM` INT)
  2. BEGIN#Routine body goes here...
  3. DECLARE
  4. Done INT DEFAULT 0;
  5. DECLARE
  6. R1_USER_NAME VARCHAR ( 30 );
  7. DECLARE
  8. R1_REAL_NAME VARCHAR ( 50 );
  9. DECLARE
  10. R1_PARENT_NAME VARCHAR ( 30 );
  11. DECLARE
  12. GERENTUANDUI DECIMAL( 16,3 );
  13. DECLARE
  14. JIJIANGDAISHU INT DEFAULT 0;
  15. DECLARE
  16. R2_USER_NAME VARCHAR ( 30 );
  17. DECLARE
  18. R2_REAL_NAME VARCHAR ( 50 );
  19. DECLARE
  20. PARENT_USER_NAME VARCHAR ( 30 );
  21. DECLARE
  22. PARENT_REAL_NAME VARCHAR ( 50 );
  23. DECLARE
  24. ORI_BONUS_QY_BD_BL DECIMAL ( 16, 3 );
  25. DECLARE
  26. SHIJIDAISHU INT DEFAULT 0;
  27. /* 声明游标 */
  28. DECLARE
  29. rs CURSOR FOR
  30. SELECT
  31. U.USER_NAME
  32. , U.REAL_NAME
  33. , P.PV_PCS + P.PV_PSS AS GERENTUANDUI
  34. , U2.USER_NAME AS PARENT_NAME
  35. FROM
  36. AR_PERF_PERIOD P
  37. LEFT JOIN
  38. AR_USER U
  39. ON
  40. U.ID = P.USER_ID
  41. LEFT JOIN
  42. ar_user_relation_new R
  43. ON
  44. R.USER_ID = U.ID
  45. LEFT JOIN
  46. ar_user U2
  47. ON
  48. U2.ID = R.PARENT_UID
  49. WHERE
  50. P.PERIOD_NUM = PRM_PERIOD_NUM
  51. AND
  52. (
  53. XIAOYEJI(U.USER_NAME, PRM_PERIOD_NUM)
  54. )
  55. >= 980
  56. ;
  57. /* 异常处理 */
  58. DECLARE
  59. CONTINUE HANDLER FOR SQLSTATE '02000'
  60. SET Done = 1;
  61. /* 打开游标 */
  62. OPEN rs;
  63. /* 逐个取出当前记录LingQi字段的值,需要进行最大值的判断 */
  64. DELETE FROM ek_temp_gx_zs_cs;
  65. FETCH NEXT
  66. FROM
  67. rs
  68. INTO
  69. R1_USER_NAME
  70. , R1_REAL_NAME
  71. , GERENTUANDUI
  72. , R1_PARENT_NAME
  73. ;
  74. /* 遍历数据表 */
  75. REPEAT
  76. SET JIJIANGDAISHU = 1;
  77. SET SHIJIDAISHU = 0;
  78. REPEAT
  79. SET R2_USER_NAME = NULL;
  80. SET ORI_BONUS_QY_BD_BL = 0;
  81. SELECT
  82. U.`会员编号`
  83. , U.`会员姓名`
  84. , U.`推荐编号`
  85. , U.`推荐姓名`
  86. , IFNULL(B.ORI_BONUS_QY_BD,0)
  87. INTO
  88. R2_USER_NAME
  89. , R2_REAL_NAME
  90. , PARENT_USER_NAME
  91. , PARENT_REAL_NAME
  92. , ORI_BONUS_QY_BD_BL
  93. FROM
  94. zr_user_vw U
  95. LEFT JOIN
  96. AR_CALC_BONUS B
  97. ON
  98. U.`会员编号` = B.LAST_USER_NAME
  99. and B.PERIOD_NUM = PRM_PERIOD_NUM
  100. WHERE
  101. U.`会员编号` = R1_PARENT_NAME
  102. ;
  103. SET Done = 0;
  104. SET SHIJIDAISHU = SHIJIDAISHU + 1;
  105. IF ORI_BONUS_QY_BD_BL = 0 THEN
  106. INSERT INTO ek_temp_gx_zs_cs
  107. ( `得奖人编号`
  108. , `得奖人姓名`
  109. ,`个人团队`
  110. , `给奖人编号`
  111. , `给奖人姓名`
  112. , `计奖代数`
  113. , `给奖人报单团队奖`
  114. , `实际代数`
  115. )
  116. VALUES
  117. ( R1_USER_NAME
  118. , R1_REAL_NAME
  119. , GERENTUANDUI
  120. , R2_USER_NAME
  121. , R2_REAL_NAME
  122. , JIJIANGDAISHU
  123. , ORI_BONUS_QY_BD_BL
  124. , SHIJIDAISHU
  125. )
  126. ;
  127. END IF;
  128. IF
  129. ORI_BONUS_QY_BD_BL > 0 THEN
  130. INSERT INTO ek_temp_gx_zs_cs
  131. ( `得奖人编号`
  132. , `得奖人姓名`
  133. ,`个人团队`
  134. , `给奖人编号`
  135. , `给奖人姓名`
  136. , `计奖代数`
  137. , `给奖人报单团队奖`
  138. , `实际代数`
  139. )
  140. VALUES
  141. ( R1_USER_NAME
  142. , R1_REAL_NAME
  143. , GERENTUANDUI
  144. , R2_USER_NAME
  145. , R2_REAL_NAME
  146. , JIJIANGDAISHU
  147. , ORI_BONUS_QY_BD_BL
  148. , SHIJIDAISHU
  149. )
  150. ;
  151. SET JIJIANGDAISHU = JIJIANGDAISHU + 1;
  152. END IF;
  153. SET R1_PARENT_NAME = PARENT_USER_NAME;
  154. UNTIL JIJIANGDAISHU >= 3 AND ORI_BONUS_QY_BD_BL >0 OR R2_USER_NAME IS NULL
  155. END REPEAT;
  156. -- INSERT INTO ORI_BONUS_GX_CS(USER_NAME,REAL_NAME,GERENTUANDUI,PARENT_NAME,ORI_BONUS_GX) VALUES (USER_NAME,REAL_NAME,GERENTUANDUI,PARENT_NAME,ORI_BONUS_GX);
  157. FETCH NEXT
  158. FROM
  159. rs
  160. INTO
  161. R1_USER_NAME
  162. , R1_REAL_NAME
  163. , GERENTUANDUI
  164. , R1_PARENT_NAME
  165. ;
  166. UNTIL Done
  167. END REPEAT;
  168. /* 关闭游标 */
  169. CLOSE rs;
  170. END