oracle中的while循环

use*_*074 2 sql oracle while-loop

您好我在Oracle SQL中编写了一个while循环.我认为语法很好,但由于某种原因它不能成功.有人可以帮我检查问题所在吗?非常感谢!

它只使用一个表"test_fruit",colume"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;
Run Code Online (Sandbox Code Playgroud)

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

Yan*_*n39 6

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

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;
Run Code Online (Sandbox Code Playgroud)

试试小提琴