存储过程中的Mysql while变量

存储过程中的Mysql while变量,mysql,Mysql,在搜索了过去5个小时后,我不明白为什么这个代码不起作用 但是,如果我删除循环中的插入行,它会像预期的那样工作 我在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 <

在搜索了过去5个小时后,我不明白为什么这个代码不起作用

但是,如果我删除循环中的插入行,它会像预期的那样工作

我在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);
SET@j=0;
分隔符$$
创建过程procedureYearWeek(INOUT j INT)
开始
从perperperiods不在(0)中的期间中删除;
当j<10时
插入期间(每个期间)值(年周(ADDDATE(CURRENT_DATE(),INTERVAL j DAY));
选择j+1进入j;
结束时;
结束$$
定界符;
调用程序yearewek(@j);

很抱歉,原来是我对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 ;
分隔符$$
创建过程procedureYearWeek()
开始
声明j INT默认值为0;
声明newDAta INT默认值为0;
从perperperiods不在(0)中的期间中删除;
当j<10时
插入期间(每个期间)值(年周(ADDDATE(CURRENT_DATE(),INTERVAL newDAta DAY));
设置j=j+1;
设置newDAta=newDAta+14;
结束时;
结束$$
定界符;

预期结果是什么?它应该做什么?什么不起作用?我需要while循环将YEARWEEK()值插入时段表10时间,即201704、201705、201706等。看起来间隔后的j没有得到更新的值。