ドナーIDが入力されると、ステータスフィールドに基づいてアクティブな誓約をチェックする短い手順を作成しました(データタイプ10のNUMBERはアクティブ、20は完了)、毎月の支払いを行い、すべての条件が満たされた場合はブール値Trueを返しますそうでない場合は False。DBMS 出力を追加する前は正常にコンパイルされますが、エラー PLS-00306:wrong number or types of arguments in call" が発生します。
これを自分で解決するのはかなり気分が良かったのですが、どこが間違っているのかわかりません。また、例外ハンドラに関する説明 (コードでコメント) を探しています。コメントと指導点を事前にありがとうございます!
私のコード:
CREATE OR REPLACE PROCEDURE DDPAY_SP
(donor_id IN NUMBER, active_pl OUT BOOLEAN)
IS
pay_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO pay_count
FROM dd_pledge
WHERE iddonor = donor_id AND
idstatus = 10 AND
paymonths > 1;
IF pay_count > 1 THEN
active_pl := TRUE;
ELSE active_pl := FALSE;
END IF;
DBMS_OUTPUT.PUT_LINE('Active Pledge and paymonths: ' || active_pl);
/* want to add exception but don't understand how to choose
the handler for blocks of code that are not the Oracle defined
exceptions--Can someone explain better than book I have? I know
code should be:
EXCEPTION
WHEN .....
DBMS_OUTPUT.PUT_LINE(' '); */
END;