MySQL存储过程涉及Cursor的使用

  • A+
所属分类:数据库
本文中介绍了一个MySQL存储过程,其中涉及Cursor的使用
示例如下:
  1. CREATE PROCEDURE `justifyGroupNum`()
  2. NOT DETERMINISTIC
  3. SQL SECURITY DEFINER
  4. COMMENT ''
  5. BEGIN
  6. /*how to run:call justifyGroupNum()*/
  7. DECLARE p_group_id int;
  8. declare p_num int;
  9. declare stopFlag int;
  10. DECLARE cursor_name CURSOR
  11. FOR select c_group_id,count(*) as num
  12. from `t_group_member`
  13. where c_valid in (3,4)
  14. group by c_group_id;
  15. DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;
  16. OPEN cursor_name;
  17. REPEAT
  18. FETCH cursor_name INTO p_group_id,p_num;
  19. begin
  20. update t_groupinfo set c_member_number=p_num where c_group_id=p_group_id;
  21. end;
  22. UNTIL stopFlag = 1
  23. END REPEAT;
  24. CLOSE cursor_name;
  25. END;

总结:
1、注意设置游标的countinue handler:DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;
2、注意REPEAT和UTILE [停止条件] END REPEAT的使用,否则不会循环;
3、如何RUN,输入并执行:call justifyGroupNum()

图片引用自网络