pl / sql引用异常

时间:2015-03-07 18:14:44

标签: sql database oracle plsql

如果我通过' +'到第二个参数?我正在尝试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;      

.......

2 个答案:

答案 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)。在调用块中使用异常,你可以捕获它....