pl/sql
的異常處理
根據exception
來進行異常處理
pl/sql
的begin
和end
之間發生的異常通過在這個塊中定義的
exception
來處理。同一塊中沒有異常處理定義的情況下,則引用上層的意外處理。
例如雖然捕捉了異常,但是在異常處理部分什麼也沒寫的情況下什麼也不會發生。但是如果不進行異常再呼叫,塊內的異常處理被判斷為執行,則不通知上層的塊。
begin
<程式段>
exception
when <
異常名》 then
<異常處理>
end;
帶有異常處理的
pl/sql
塊定義在異常處理中,如果有多個
when
,可以分開處理。
如果想同時處理多個異常,則用
when
異常名or
異常名or
。。。
例:發生的所有異常都是什麼都不處理然後結束(不顯示訊息)。
declare
vnumnumber(2);
begin
vnum := 1 / 0;
dbms_output.put_line('
數値=' || vnum);
exception
when others then
null; -- null;--
什麼都不處理
end;/
others
異常是特殊的異常名,包括所有的異常。但是
others
不能和其他的異常一起進行處理。
多個例外處理的寫法以及呼叫上層異常處理的方法
在發生除零例外的時候顯示錯誤資訊。在發生除零異常的時候,發生異常的本身不能向上層丟擲。除零異常以外的所有異常發生的時候在異常處理的部分使用
raise
來向上層丟擲這個異常。
declare
vnumnumber(2);
begin
-- zero divide exception
vnum := 1 / 0;
dbms_output.put_line('
數値=' || vnum);
exception
when zero_divide then
dbms_output.put_line('
不能進行計算
');when others then
--<
異常処理
>
raise;
end;/
others
異常是包括所有異常的異常名,必須要寫在異常處理的最後,否則會出現變異錯誤(因為會把後面的異常處理器給覆蓋)。
巢狀塊的異常處理
declare
vnumnumber(2);
begin
begin
-- zero divide exception
vnum := 1 / 0;
exception
when zero_divide then
null;
end;
exception
when others then
<
異常処理
>
raise;
end;
/
核心模組程式設計入門之二
模組程式設計屬於核心程式設計,因此,除了對核心相關知識有所了解外,還需要了解與模組相關的知識。1 應用程式與核心模組的比較 為了加深對核心模組的了解,表一給出應用程式與核心模組程式的比較。表一 應用程式與核心模組程式的比較 c語言應用程式 核心模組程式 使用函式 libc庫 核心函式 執行空間 使用...
PL SQL 程式設計 二
1 for迴圈 語法 begin for i in reverse 1.10 loop insert into users values i,歐巴馬 end loop end 注意 迴圈變數 i 是隱含增加的,所以無法看到 2 goto語句 goto 語句用於跳轉到特定的位置去執行語句。由於goto...
pl sql程式設計(二)
建立乙個函式 輸入姓名 返回年薪 表裡存的是月薪 create function sp fun2 spname varchar2 return number is yearsal number 10,2 begin select sal 12 into yearsal from emp where ...