私のoracle PL/SQLプログラムでDIVIDE_BY_ZERO例外を生成しようとしています。私は関数を使用していますが、私は私のプログラムを実行するとき、私は以下に示すエラーが発生しています。私のプログラムで何が間違っているか教えてもらえますか?関数内のPL/SQL例外処理
コード:
CREATE OR REPLACE
PACKAGE CALCULATOR AS
FUNCTION AddNumber(addend IN Number, Addend2 IN Number) RETURN NUMBER;
FUNCTION DivNumber(divend IN Number, divend2 IN Number) RETURN NUMBER;
END CALCULATOR;
/
CREATE OR REPLACE
PACKAGE BODY CALCULATOR AS
FUNCTION AddNumber(addend IN Number, Addend2 IN Number) RETURN NUMBER AS
BEGIN
return addend + addend2;
END AddNumber;
FUNCTION DivNumber(divend IN Number, divend2 IN Number) RETURN NUMBER AS
BEGIN
return divend/divend2;
EXCEPTION
WHEN ZERO_DIVIDE THEN
NULL;
END DivNumber;
END CALCULATOR;
/
select calculator.AddNumber(3,4) from dual;
select calculator.DivNumber(12,0) from dual;
が出力:
ような例外に対処することができます。それを修正する方法は別の問題です。それは "仕様"(関数がゼロで除算されたときに何をしたいか)に依存します。何が問題なのですか?ゼロ除算の場合、EXCEPTIONブロックに入ります(実行はRETURNコマンドには届きません)。また、EXCEPTIONブロックにはRETURNステートメントがありません。関数はRETURN文を持たないことは許されません。これは、エラーメッセージに表示される内容です。 – mathguy