存储过程中的循环不会执行

时间:2014-07-05 15:58:31

标签: mysql stored-procedures

我在这里读过许多关于抛出错误的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。)

对于为何这不起作用,您有什么建议吗?

0 个答案:

没有答案