2017-01-22 41 views
0

已經搜索了近5小時,我想不通爲什麼這個代碼不工作後...Mysql的,而在存儲過程中的變量

預期如果我刪除循環內的INSERT線但它確實工作? ??

我在Debian上使用Mysql 5.5。

請幫忙嗎?先謝謝你。

SET @j = 0; 

DELIMITER $$ 
CREATE PROCEDURE procedureYearWeek(INOUT j INT) 
    BEGIN 
     DELETE FROM Periods WHERE perPeriods NOT IN (0); 
     WHILE j < 10 DO 
      INSERT INTO Periods (perPeriods) VALUES (YEARWEEK(ADDDATE(CURRENT_DATE(), INTERVAL j DAY))); 
      SELECT j + 1 INTO j; 
     END WHILE; 
    END $$ 
DELIMITER ; 

CALL procedureYearWeek(@j); 
+0

預期結果是什麼?它應該做什麼?什麼不起作用? – Kinetic

+0

我需要while循環來將YEARWEEK()值插入到Periods表中,例如201704,201705,201706等等。它看起來像INTERVAL之後的j沒有得到更新的值。 – Swartz

回答

0

對不起,原來是我對Mysql的一個愚蠢的錯誤與經驗不足。 這就是答案:

DELIMITER $$ 
CREATE PROCEDURE procedureYearWeek() 
BEGIN 
    DECLARE j INT DEFAULT 0; 
    DECLARE newDAta INT DEFAULT 0; 
    DELETE FROM Periods WHERE perPeriods NOT IN (0); 
     WHILE j < 10 DO 
      INSERT INTO Periods (perPeriods) VALUES (YEARWEEK(ADDDATE(CURRENT_DATE(), INTERVAL newDAta DAY))); 
      SET j = j + 1; 
      SET newDAta = newDAta + 14; 
     END WHILE; 
    END $$ 
DELIMITER ;