[英]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.