Oracle中的while循环

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。谢谢!


1
什么错误?你期望循环做什么?它实际上在做什么? - Mike Dinescu
展示一张简短的测试数值表也会有所帮助,以说明您试图实现的内容。 - Adam Miller
你不能使用 while (select),必须要使用游标。 - Yann39
谢谢,光标?你能再解释一下吗? - user2679074
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;

Try the fiddle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接