Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 带有while的PL/SQL循环_Oracle_Plsql_While Loop - Fatal编程技术网

Oracle 带有while的PL/SQL循环

Oracle 带有while的PL/SQL循环,oracle,plsql,while-loop,Oracle,Plsql,While Loop,问题是,循环没有按需要计数: 例如,我需要计算:一张100%的DVD价格等于64美元$ 95%时为60.8%$ 在90美元时,它必须采用原价(64美元)并从该金额中获得90%,但相反,他是从最后一个(60.8美元)价格开始计算的,他是90% create or replace procedure PR_PRICE is V_PRICE DVD.AMOUNT_PRICE_DVD%type; p_counter number(3):=100; begin select AMOUNT_PRIC

问题是,循环没有按需要计数:

例如,我需要计算:一张100%的DVD价格等于64美元$ 95%时为60.8%$ 在90美元时,它必须采用原价(64美元)并从该金额中获得90%,但相反,他是从最后一个(60.8美元)价格开始计算的,他是90%

create or replace procedure PR_PRICE
is V_PRICE DVD.AMOUNT_PRICE_DVD%type;
p_counter number(3):=100;
begin
    select AMOUNT_PRICE_DVD into V_PRICE
    from DVD
    where TITLE_DVD like '%pop';
 --   p_counter :=100;

    while p_counter >= 80 loop
        V_PRICE := p_counter*V_PRICE/ 100;

        dbms_output.put_line('The price of DVD at ' || p_counter ||'% is: ' ||  V_PRICE ||'$');
        p_counter := p_counter-5;
    end loop;


end PR_PRICE;
/

不要覆盖
v_price
,而是为折扣价格创建一个不同的变量:

create or replace procedure PR_PRICE
is 
V_PRICE DVD.AMOUNT_PRICE_DVD%type;
V_DISCOUNT_PRICE DVD.AMOUNT_PRICE_DVD%type; -- Declared here
p_counter number(3):=100;
begin
    select AMOUNT_PRICE_DVD into V_PRICE
    from DVD
    where TITLE_DVD like '%pop';

    p_counter :=100;

    while p_counter >= 80 loop
        V_DISCOUNT_PRICE := p_counter*V_PRICE/ 100; -- Calculated here

        dbms_output.put_line('The price of DVD at ' || p_counter ||'% is: ' ||  V_DISCOUNT_PRICE ||'$');
        p_counter := p_counter-5;
    end loop;


end PR_PRICE;

@如果答案是你一直在寻找的,你什么都不知道。。。别忘了这样做。否则,这个问题仍然会突然出现,因为没有更好的词,所以这个问题“悬而未决”。这也有助于抽出时间回答您的问题的个人。