首页 > 代码库 > MySQL游标的使用

MySQL游标的使用

  1. MySQL游标的使用  
  2.  
  3. A simple cursor of mysql  
  4.  
  5. step1:  
  6. 新建表tb_test;  
  7.  
  8. create table tb_test(  
  9.    id int  
  10. );  
  11.  
  12. insert into tb_test values (‘1‘);  
  13. insert into tb_test values (‘2‘);  
  14. insert into tb_test values (‘3‘);  
  15.  
  16. step2:  
  17. 声明存储过程sp_test;  
  18.  
  19. delimiter $$    
  20. create procedure sp_test()    
  21. BEGIN    
  22.    declare tmp int default 0;  
  23.    declare sum int default 0;  
  24.    declare done int default -1;  
  25.      
  26.    /* 声明游标 */  
  27.    declare myCursor cursor for select id from tb_test;  
  28.      
  29.    /* 当游标到达尾部时,mysql自动设置done=1 */    
  30.    declare continue handler for not found set done=1;  
  31.      
  32.    /* 打开游标 */  
  33.    open myCursor;  
  34.      
  35.    /* 循环开始 */  
  36.    myLoop: LOOP  
  37.      
  38.        /* 移动游标并赋值 */  
  39.        fetch myCursor into tmp;  
  40.          
  41.        if done = 1 then  
  42.        leave myLoop;  
  43.        end if;  
  44.          
  45.        /* do something */  
  46.        set sum = sum + tmp;  
  47.      
  48.    /* 循环结束 */  
  49.    end loop myLoop;  
  50.      
  51.    insert into tb_test values(sum);  
  52.      
  53.    /* 关闭游标 */  
  54.    close myCursor;  
  55. END    
  56. $$    
  57. delimiter ;  
  58.  
  59. step3:  
  60. call sp_test();  
  61. select * from tb_test();  
  62. +----+    
  63. | id |    
  64. +----+    
  65. |  1 |    
  66. |  2 |    
  67. |  3 |  
  68. |  6 |    
  69. +----+

MySQL游标的使用