-1

次のmysqlプロシージャを作成しようとしていますが、最後の2時間スタックしていて、何が問題なのかわかりません。

delimiter $$
drop procedure if exists pos_finder;
    create procedure pos_finder()
     begin
     declare below, normal, normal_h, svalue, eid, above int default 0;
     declare bcounter, ncounter, acounter int default 0;
     declare done int default 0;
     declare userData cursor for select e.id, s.value, t.below_normal_h,
t.Normal_b, t.Normal_h, t.above_normal_l from k_employee as e, k_trackers_data as s, k_trackers_sub as t where e.id = 3 and s.user_id = e.id and t.id = s.sub_tracker_id;
     declare continue handler for not found set done = 1;
     open userData;
     fetch userData into eid, svalue, below, normal, normal_h, above;
     if svalue < below then
     set bcounter = bcounter + 1;
     else if svalue > normal then
     set ncounter = ncounter + 1;
     else if svalue > above then
     set acounter = acounter + 1;
     end if;
     close userData;
     end$$

Mysqlは言う

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '' at
line 19

これはuserData行を閉じます。あちこちで改行をシフトしましたが、常にこの行でのみエラーが発生します

誰かが私が間違っているところを教えてもらえますか?

4

1 に答える 1

0

elseif、ではありませんelse[space]if。スペースがあれば、まったく新しいifブロックを開くことになります。したがって、電話に出るまでに2つの「ぶら下がり」がありcloseます。

于 2012-11-18T03:35:43.770 に答える