私は現在、(パラメータp_Paidに基づいて)支払った金額に等しい金額を支払うことを認識する「Pay」という新しい手続きでPL/SQLを実行しようとしています(パラメータp_Priceに基づいて)必要な値よりも大きいかどうかを判定します。PL/SQL - 必要に応じて正確な変更を行う支払いシステム
p_Price
とp_Paid
の違いは、可変v_Return
です。
あなたは(p_Paid
)以下(p_Price
)頼まれたものよりを支払うときp_Paid = p_Price
、(例えば、10 = 10)が、それはそれが必要その後、
"No money to return!"
を言うべき正確な金額を支払いますテキスト
"You're some short!"
を示しそして、あなたは(p_Price
を)頼まれたものよりも(p_Paid
)以上を支払うとき、それはあなたが変更与える必要があります20ドル、10ドル、5ドル、1ドル紙幣を使用し、各タイプの請求書の正確な数を示す。
9 $20 bill(s)
1 $10 bill(s)
1 $5 bill(s)
1 $1 bill(s)
この手順では、すべてが整数(関与なしセント)であることを前提としていますp_Paid
場合、それは正確な変化の差を示すべき、206及びp_Price
は10でした。
は、これまでのところ私は、お支払いは価格に等しい、または価格、未満だったときに認識するための手順を取得するために管理しているが、私はお金の戻り部分を取得する方法を把握しようと恐ろしい時間を過ごしています彼らがのために頼まれた以上のものを支払ったときに働くこと。どんな助けでも大いに感謝されるでしょう。これは私がこれまで持っているものである(それが見えるかもしれませんどのように複雑に事前に謝罪、私はちょうどPL/SQLを学び始めた):
CREATE OR REPLACE procedure Pay
(p_Price IN number,
p_Paid IN number)
AS
v_Return number;
v_20 number;
v_10 number;
v_5 number;
v_1 number;
BEGIN
v_Return := (p_Price - p_Paid);
v_20 := 0;
v_10 := 0;
v_5 := 0;
v_1 := 0;
IF v_Return = 0 THEN
dbms_output.put_line('No money to return!');
ELSE
IF p_Price > p_Paid THEN
dbms_output.put_line('You're some short!');
ELSE
IF p_Price < p_Paid THEN
WHILE v_Return > 20 LOOP
v_Return := v_Return - 20;
v_20 := v_20 + 1;
IF v_Return > 10 THEN
v_Return := v_Return - 10;
v_10 := v_10 + 1;
IF v_Return > 5 THEN
v_Return := v_Return - 5;
v_5 := v_5 + 1;
IF v_Return > 1 THEN
v_Return := v_Return - 1;
v_Return := v_1;
dbms_output.put_line(v_20 || '$20 bill(s)');
dbms_output.put_line(v_10 || '$10 bill(s)');
dbms_output.put_line(v_5 || '$5 bill(s)');
dbms_output.put_line(v_1 || '$1 bill(s)');
END IF;
END IF;
END IF;
END LOOP;
END IF;
END IF;
END IF;
END;
/
「あなたはいくつか短いですよ」で引用符がありません。また、コードをきれいにレイアウトすると、構造に集中するのに役立ちます。 –