簡體   English   中英

pl / sql引用異常

[英]pl/sql quotes exception

我將'+'傳遞給第二個參數時如何解決異常? 我正在嘗試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;      

.......

這是因為您甚至從未進入過程序。 如果要捕獲該錯誤,則是從調用本身捕獲了異常,例如:

begin
  z33(1,'+','+');
exception
  when value_error then
    dbms_output.put_line('Invalid parameter in call');
end;
/

Dbms輸出結果:

Invalid parameter in call

在上述情況下,在將參數傳遞給過程z33時引發了異常。 過程只能處理執行塊中引發的異常。 在這種情況下,異常將傳播到外部環境(即您的調用環境)。 在調用塊中使用異常,您可以捕獲它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM