3

嗨,我在 Oracle SQL 中写了一个 while 循环。我认为语法很好,但由于某种原因无法执行。有人可以帮我检查问题出在哪里吗?非常感谢!

它只使用一张表“test_fruit”,列“price”。

BEGIN
  WHILE (select sum(price) from test_fruit) <50 LOOP
    update test_fruit set price = price + 5; 
    EXIT WHEN (select max(price) from test_fruit) >20; 
  END LOOP;
END;

顺便说一句,我要做的是更新表,并增加每行的价格,直到总和为 50。每行的最高价格也不能超过 20。谢谢!

4

1 回答 1

7

有几种方法可以做到这一点,但你可以尝试这样的事情:

DECLARE
  l_sumprice INTEGER := 0;
  l_maxprice INTEGER := 0;
BEGIN
  WHILE l_sumprice < 50 AND l_maxprice < 20 LOOP
    UPDATE test_fruit SET price = price + 5;
    SELECT sum(price), max(price) INTO l_sumprice, l_maxprice FROM test_fruit;
  END LOOP;
END;

试试小提琴

于 2013-09-25T15:59:18.960 回答