【发布时间】:2021-12-26 18:03:44
【问题描述】:
我想创建一个循环选择不同值的过程,我有下面的示例代码,但在这种情况下,问题是最后一个值没有应用。循环在最后一个值之前停止,我不知道为什么。
CREATE PROCEDURE `my_procedure`()
BEGIN
DECLARE bDone INT;
DECLARE Var2 INT;
DECLARE curs CURSOR FOR SELECT DISTINCT(id) FROM my_table WHERE deleted = 0 and status = 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
OPEN curs;
SET bDone = 0;
REPEAT
FETCH curs INTO Var2;
IF Var2 THEN
SELECT PR.some_value INTO @A FROM my_table2 PR WHERE PR.id = Var2 AND PR.status = 1 AND PR.deleted = 0;
SELECT PB.some_value INTO @B FROM my_table3 PB WHERE PB.id = Var2 AND PB.status = 1 AND PB.deleted = 0;
SELECT MP.id INTO @C FROM my_table4 MP WHERE MP.id = Var2 AND MP.deleted = 0;
IF @A THEN
IF @C THEN
UPDATE my_table4 SET price = @A, modified = now() WHERE id = Var2;
ELSE
INSERT INTO my_table4 (id, price) VALUES (Var2, @A);
END IF;
ELSEIF @B THEN
IF @C THEN
UPDATE my_table4 SET price = @B, modified = now() WHERE id = Var2;
ELSE
INSERT INTO my_table4 (id, price) VALUES (Var2, @B);
END IF;
END IF;
END IF;
UNTIL bDone END REPEAT;
CLOSE curs;
END
谢谢。
【问题讨论】: