我正在写一个程序,将通过一个表,收集所有的前10名的结果。我使用光标然后获取结果。我有点纠结于如何打印出结果。我使用了select语句来获得这些结果,但有人告诉我有一个错误。
任何帮助都将不胜感激。谢谢。

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;
#

最佳答案

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

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

关于mysql - MySQL游标循环选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12658087/

10-10 04:34