美文网首页
存储过程——遍历结果集, 在循环外先要 fetch

存储过程——遍历结果集, 在循环外先要 fetch

作者: 伏牛山忍者 | 来源:发表于2019-04-16 11:31 被阅读0次
    DECLARE s int default 0;  
    #声明游标cursor_name(cursor_name是个多行结果集)  
    DECLARE cursor_name CURSOR FOR select id ,name from from_data;  
    #设置一个终止标记   
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1;  
    set str = "--";  
    #打开游标  
    OPEN cursor_name;  
    #获取游标当前指针的记录,读取一行数据并传给变量a,b  
    -- fetch  cursor_name into a,b;  
    #开始循环,判断是否游标已经到达了最后作为循环条件   
    while s <> 1 do  
         set str =  concat(str,x);  
         fetch  cursor_name into a,b;  
         insert into to_data(id,name) values(a,b);  
        end while;  
        #关闭游标  
    

    如果不在外边fetch,只在while内fetch ,上面代码执行结果会多出一条记录。据此推测, 这是因为s 的原因, 在最后一条记录fetch后, s不等于1, 需要再fetch下, s才等于1

    相关文章

      网友评论

          本文标题:存储过程——遍历结果集, 在循环外先要 fetch

          本文链接:https://www.haomeiwen.com/subject/cqnvwqtx.html