begin
declare done int DEFAULT 0;declare bankclass varchar(20);
declare bankname varchar(100);
declare bc CURSOR for
select bank.bank_class,bank.bank_name
from bank;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
open bc;repeat
fetch next from bc into bankclass,bankname;
select bankname;//为何只显示一行?
until done end repeat;
close bc;end为什么只能打印出一条记录?显示一行?其实有很多行数据的!

解决方案 »

  1.   

    donetboy328 
    咖啡豆 
    等级: 
    可用分等级:中农 
    总技术分:0 
    总技术分排名:336041 
    结帖率:35.48% 结贴率这么低?!
      

  2.   

    begin 
    declare done int DEFAULT 0; 

    declare bankclass varchar(20); 
    declare bankname varchar(100); 

    declare bc CURSOR for 
    select bank.bank_class,bank.bank_name 
    from bank; 
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1; 

    open bc; 

    repeat 
    fetch bc into bankclass,bankname;   ##//-- chnaged by ACMAIN
    select bankname;//为何只显示一行? 
    until done end repeat; 
    close bc; 
    end 
      

  3.   

    出现一条的意思就是说,你在循环里每次只打印一条,也就是fetch了一条数据,你重新下一个循环,还是fetch了一条数据,所以每次都是打印一条,计算机其实每次循环都打印一条了,但是由于速度太快,你最后只看到一条,但它本身还是一条一条的都打了一遍了.所以说,你这样做意义不大,还不如直接select出来所有的结果呢,何必折磨自己?游标+循环用来对每一条数据进行特定的update或insert,对于select,没什么用,除非为了提取某个参数然后再从其它表取值.比如select ID into x from y_table where z=bankname;这样的.