尝试在存储过程的循环中使用时间戳变量时遇到问题。在下面,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 中使用随循环而变化的变量?