存储过程中的Mysql while变量
在搜索了过去5个小时后,我不明白为什么这个代码不起作用 但是,如果我删除循环中的插入行,它会像预期的那样工作 我在Debian上使用Mysql 5.5 需要帮忙吗?先谢谢你存储过程中的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 <
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没有得到更新的值。