oracle plsql 捕獲異常和丟擲異常

2022-01-31 07:32:45 字數 1388 閱讀 8463

在寫oracle儲存過程的時候很多東西放到儲存過程裡面比如一些判斷等,要比在程式邏輯裡面簡單很多,但是也會涉及到捕獲和丟擲一樣的問題。

exception

when excepttion_name1 then

........

when excepttion_name2 then

........

when excepttion_name3 then

........

end;

declare 

a int:=0;

b int:=1;

ex_1 exception;

ex_2 exception;

begin

if a=0 then

raise ex_1;

end if;

if b=1 then

raise ex_2;

end if;

exception

when ex_1 then

dbms_output.put_line('捕獲了錯誤1');

when ex_2 then

dbms_output.put_line('捕獲了錯誤2');

end;

捕獲了錯誤1
這裡由於在ex_1的地方就出現了錯誤 ,所以下面ex_2沒有執行,而是直接跳到錯誤處理的**部分了。在oracle中不允許乙個異常由多個異常處理塊來處理。

declare 

a int:=0;

ex_1 exception;

begin

if a=0 then

raise ex_1;

end if;

exception

when others then

dbms_output.put_line('捕獲了全域性錯誤');

end;

輸出:

該函式是將應用程式專有的錯誤從伺服器端轉達到客戶端應用程式(其他機器上的sqlplus或者前台開發語言)

error_number_in :自定義的錯誤碼,容許從 -20000 到 -20999 之間,這樣就不會與 oracle 的任何錯誤**發生衝突。

error_msg_in:長度不能超過 2k,否則擷取 2k

例子:讓乙個數不能為0

declare 

a int:=0;

begin

if a=0 then

end if;

end;

執行:

Oracle PL SQL異常處理

case語句語法格式如下 case 變數 when 表示式1 then 值1 when 表示式2 then 值2 when 表示式n then 值n else 值n 1 end 1 使用case語句寫乙個pl sql塊,要求輸入員工編號,根據員工的職位進行工資提公升,提公升要求如下 如果職位是cle...

Oracle PL SQL異常處理

oracle的exception init編譯指令declare exception name exception pragma exception init exception name,error code 下面給乙個例項 declare v num number sv num v result...

ORACLE PLSQL 異常處理

例一 create table testerr id number 10 name varchar2 10 insert into testerr values 1,test insert into testerr values 2,test insert into testerr values 3...