ストアド プロシージャのループでタイムスタンプ変数を使用しようとすると、問題が発生します。以下では、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 で使用することは禁止されていますか?