2013-09-25 75 views
0

您好我在Oracle SQL中編寫了一個while循環。我認爲語法很好,但由於某種原因它不能執行。有人能幫我檢查問題出在哪裏嗎?非常感謝!在oracle中的一個while循環

它只使用一個表「test_fruit」,與colume「價格」。

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

有什麼錯誤?你期待循環做什麼?它究竟在做什麼? –

+0

這也有助於展示一個測試值的簡短表格,用於說明您正在嘗試執行的操作。 –

+0

你不能'while(select)',你必須使用遊標。 – Yann39

回答

4

有幾種方法可以做到這一點,但你可以嘗試這樣的:

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

+0

非常感謝你,Yann39。有用!欣賞。 – user2679074