2016-01-17 2 views
0

Я пытаюсь вычислить общее количество предметов, которые можно купить с заданной суммой денег. Для этого я пытаюсь создать блок с циклом WHILE, чтобы увеличить стоимость элемента до тех пор, пока значение доллара ($ 100) не будет выполнено, но не может понять, как правильно вычислить цикл.Приращение PL/SQL в цикле WHILE

DECLARE 
lv_totavail_num NUMBER(8,2) := 100; 
lv_itemprice_num NUMBER(8,2); 
lv_totamt_num NUMBER(8,2); 
lv_loopnum_num NUMBER(8,2) := 0; 
BEGIN 
DBMS_OUTPUT.PUT_LINE('Total Starting Amount: ' || lv_totavail_num); 
SELECT price 
INTO lv_itemprice_num 
FROM BB_PRODUCT 
WHERE IDPRODUCT = 4; 
DBMS_OUTPUT.PUT_LINE('Price: ' || lv_itemprice_num); 
WHILE lv_totavail_num >= lv_itemprice_num LOOP 
lv_totavail_num := lv_itemprice_num * lv_loopnum_num; 
lv_loopnum_num := lv_loopnum_num + 1; 
END LOOP; 
DBMS_OUTPUT.PUT_LINE('Number of Items Purchased that can be purchased: ' || lv_loopnum_num); 
DBMS_OUTPUT.PUT_LINE('Total Amount: '|| lv_loopnum_num * lv_itemprice_num); 
END; 

ответ

0

У вашего неправильного содержания. Используйте lv_totamt_num, чтобы рассчитать цены. Есть и другие мелочи. Проверьте следующее:

DECLARE 
lv_totavail_num NUMBER(8,2) := 100; 
lv_itemprice_num NUMBER(8,2) := 0; 
lv_totamt_num NUMBER(8,2) := 0; 
lv_loopnum_num NUMBER(8,2) := 0; 
BEGIN 
DBMS_OUTPUT.PUT_LINE('Total Starting Amount: ' || lv_totavail_num); 

SELECT price 
INTO lv_itemprice_num 
FROM BB_PRODUCT 
WHERE IDPRODUCT = 4; 
DBMS_OUTPUT.PUT_LINE('Price: ' || lv_itemprice_num); 
WHILE lv_totavail_num >= lv_totamt_num LOOP 
lv_loopnum_num := lv_loopnum_num + 1; 
lv_totamt_num := lv_itemprice_num * lv_loopnum_num; 

END LOOP; 
lv_loopnum_num := lv_loopnum_num -1; 
DBMS_OUTPUT.PUT_LINE('Number of Items Purchased that can be purchased: ' ||lv_loopnum_num ); 
DBMS_OUTPUT.PUT_LINE('Total Amount: '|| lv_loopnum_num * lv_itemprice_num); 
END; 
+0

Спасибо. <Я ценю помощь. – user3277801

Смежные вопросы