如果我通过' +'到第二个参数?我正在尝试Value_error
invalid_number
,但它无效。
create or replace PROCEDURE z33(number1 number,number2 number,character varchar2)
IS
sum number(3);
BEGIN
IF ( character= '+' ) THEN
sum := number1 + number2;
ELSIF ( character= '-' ) THEN
sum := number1 - number2;
ELSIF ( character= '*' ) THEN
sum := number1 * number2;
ELSIF ( character= '/' ) THEN
sum := number1 / number2;
ELSE
dbms_output.put_line('bad character');
END IF;
dbms_output.put_line('sum ' || sum) ;
EXCEPTION
WHEN ZERO_DIVIDE THEN
dbms_output.put_line('dont do that!!');
WHEN VALUE_ERROR THEN
dbms_output.put_line('error in input');
WHEN OTHERS THEN
dbms_output.put_line('other error');
END;
Begin
z33(1,'+','+');
end;
.......
答案 0 :(得分:2)
你甚至都没有进入你的程序。如果你想捕获那个错误,你可以从调用本身捕获异常,例如:
begin
z33(1,'+','+');
exception
when value_error then
dbms_output.put_line('Invalid parameter in call');
end;
/
Dbms输出结果:
Invalid parameter in call
答案 1 :(得分:0)
在上面的例子中,在将参数传递给过程z33时引发异常。过程只能处理执行块中引发的异常。在这种情况下,异常将传播到外部环境(即您的调用env)。在调用块中使用异常,你可以捕获它....