【转载】如何在MySQL存储过程中遍历查询结果集

转载地址:http://blog.jinshui8.com/blog/view/id-37.html

在储过程中循环查询结果需要使用到CURSOR(光标)

sql Code
  1. 
    CREATE PROCEDURE curdemo()
    
  2. 
    BEGIN
    
  3. 
      DECLARE done INT DEFAULT 0;
    
  4. 
      DECLARE a INT;
    
  5. 
      DECLARE b CHAR(225);
    
  6. 
      DECLARE cur CURSOR FOR SELECT id,title FROM test.t1; -- 这个语句声明一个光标保存记录集。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字
    
  7. 
      DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
    
  8. 
     
    
  9. 
      OPEN cur;
    
  10. 
     
    
  11. 
      REPEAT -- 循环
    
  12. 
        FETCH cur INTO a, b;-- 这个语句用指定的打开光标读取下一行(如果有下一行的话),并且前进光标指针
    
  13. 
        IF NOT done THEN
    
  14. 
           INSERT INTO test.t2 VALUES (a,b);
    
  15. 
        END IF;
    
  16. 
      UNTIL done END REPEAT;-- 结束循环
    
  17. 
     
    
  18. 
      CLOSE cur;-- 这个语句关闭先前打开的光标。
    
  19. 
    END
    
Parsed in 0.011 seconds at 65.03 KB/s, using GeSHi 1.0.8.11

本文为原创,如需转载请注明出处和本文链接!

原文地址:https://www.cnblogs.com/linewman/p/9918267.html