簡體   English   中英

mysql變量和存儲過程中的循環

[英]mysql variables and loop in stored procedure

在存儲過程的循環中嘗試使用時間戳變量時,我遇到了一個問題。 在下面的代碼中,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正確更改了它的值,並且循環執行了“樣本”次,但t不會受到影響,因此SELECT語句無法正常工作。 t變量始終具有其原始值。

為什么t變量保持不變? 我也嘗試使用while語句,但是問題仍然相同。 是否禁止在SELECT中使用隨循環而變化的變量?

您不能將1500加到TIMESTAMP 要執行日期算術,您需要使用INTERVAL

SET t = t + INTERVAL 25 MINUTE;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM