Цикл PL / SQL с временем - PullRequest
2 голосов
/ 25 июня 2019

проблема в том, что цикл не учитывается при необходимости:

Мне нужно посчитать, например: цена DVD на 100% равна 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;
/

1 Ответ

1 голос
/ 25 июня 2019

Вместо переопределения 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...