2012-09-30 92 views
1

我正在编写一个程序,它将通过一张表并收集所有前10个结果。我正在使用游标,然后获取结果。我有点卡在如何打印出结果。我使用select语句来获得这些结果,但我被告知有错误。mysql光标循环选择

任何帮助将不胜感激。谢谢。

create procedure plant_list() 
begin 
declare v_plant_id integer(5); 
declare v_common_name varchar(30); 
declare v_scientific_name varchar(20); 


declare finished boolean default false; 

declare cur_top_ten cursor for 
    select P.plant_id, common_name, concat(genus, ' ', species) 
    from plants P 
     join plant_taxonomy PT on P.plant_id = PT.plant_id 
    order by list_price desc 
    limit 10 
    ; 

declare continue handler for not found set finished = true; 

open cur_top_ten; 
curloop: loop 
    fetch cur_top_ten into v_plant_id, v_common_name, v_scientific_name; 
    if finished then 
     close cur_top_ten; 
     set finished = false; 
     leave curloop; 
    end if 

    select v_plant_id, v_common_name, v_scientific_name; 


end loop curloop; 

end; 
# 

回答

1

在结束后还有一个缺失的分号如果!

if finished then 
    close cur_top_ten; 
    set finished = false; 
    leave curloop; 
    end if;