我在这里读过许多关于抛出错误的mysql循环的线程。我也是如此,但我尝试的解决方案似乎都无法解决我的问题。
我正在使用一些存储过程,并且我正在尝试使用以下循环:
DECLARE counter INT(11) DEFAULT 0;
add_rows: LOOP
INSERT INTO vote_orders (id, vote_id, vote_order, vote_candidate)
WHILE counter <= @number_of_candidates DO
SELECT NULL, vote_id, counter, vote_candidate_a
FROM votes_copy
IF counter = @number_of_candidates THEN
LEAVE add_rows;
END IF;
UNION
END WHILE;
END LOOP add_rows;
这总是会引发以下错误:
#1064 - 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 'DECLARE counter INT(11) DEFAULT 0;
add_rows: LOOP
INSERT INTO vote_orde' at line 30
我试图只存储“计数器”的声明,这似乎是完美的,但是一旦我尝试添加循环就失败了。 (@number_of_candidates
是一个从循环调用的存储过程,UNION
应该联合每个选择,直到计数器到达@number_of_candidates
。)
对于为何这不起作用,您有什么建议吗?