2012-05-09 10 views
1

ストアドプロシージャのループでタイムスタンプ変数を使用しようとすると問題が発生します。以下に、gtimeはTIMESTAMP入力変数であり、サンプルiが適切にその値を変更しながらストアドプロシージャのmysql変数とループ

... 
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; 
... 

可変INTEGER入力され、ループは「サンプル」回実行され、Tは影響を受けず、従ってSELECT文が正しく動作しません。 t変数は常に元の値を持ちます。

t変数が同じままである理由は何ですか?私はwhile文も使ってみましたが、問題は同じです。ループ内で変更されているSELECTで変数を使用することは禁じられていますか?

答えて

1

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

SET t = t + INTERVAL 25 MINUTE; 
+0

残念ながら、それは動作しません。 tは変わらない。私も試みた\t \t \t SET t = TIMESTAMPADD(MINUTE、60、t); でも運がない。何がうまくいかないのですか?タイムスタンプ形式の問題ですか? – Fotakis

関連する問題