在寫oracle儲存過程的時候很多東西放到儲存過程裡面比如一些判斷等,要比在程式邏輯裡面簡單很多,但是也會涉及到捕獲和丟擲一樣的問題。
exceptionwhen excepttion_name1 then
........
when excepttion_name2 then
........
when excepttion_name3 then
........
end;
declarea 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...