1

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

4

1 に答える 1

1

に整数1500を追加することはできませんTIMESTAMP。日付演算を実行するには、次を使用する必要がありますINTERVAL

SET t = t + INTERVAL 25 MINUTE;
于 2012-05-09T10:02:34.480 に答える