【问题标题】:PL/SQL increment in a WHILE loopWHILE 循环中的 PL/SQL 增量
【发布时间】:2016-04-22 09:43:56
【问题描述】:

我正在尝试计算用给定金额可以购买的物品总数。为此,我尝试创建一个带有 WHILE 循环的块,以增加项目的成本,直到满足美元价值(100 美元),但无法弄清楚如何正确计算循环。

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;

【问题讨论】:

    标签: plsql while-loop increment


    【解决方案1】:

    您的 while 内容不正确。使用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;
    

    【讨论】:

    • 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2011-11-07
    • 2013-12-22
    • 2018-06-26
    • 2015-10-10
    • 2015-02-12
    相关资源
    最近更新 更多