mysql变量和存储过程中的循环

时间:2012-05-09 09:53:43

标签: mysql stored-procedures loops

尝试在存储过程循环中使用timestamp变量时遇到问题。在下文中,gtime是TIMESTAMP输入变量,samples是INTEGER输入变量

...
DECLARE t TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
DECLARE i,step INT DEFAULT 0;

SET t = gtime;

myLabel: LOOP
    IF i = samples THEN
        LEAVE myLabel;
    END IF;

    SELECT a, b FROM myTable 
        WHERE myField = 1
        AND g_time > t
        AND g_time < '2011-09-06 00:00:09';

        SET i = i + 1;      
        SET t = t + 1500;   

    ITERATE myLabel;
END LOOP myLabel;
...

虽然i正确地改变了它的值并且循环执行了“samples”次,但是t不受影响,因此SELECT语句不能正常工作。 t变量始终是其原始值。

为什么t变量保持不变?我也尝试使用while语句,但问题仍然存在。是否禁止在SELECT中使用随循环而变化的变量?

1 个答案:

答案 0 :(得分:1)

您无法将1500整数添加到TIMESTAMP。要执行日期算术,您需要使用INTERVAL

SET t = t + INTERVAL 25 MINUTE;