1. 程式人生 > >Oracle中PL/SQL之例外(異常)的使用

Oracle中PL/SQL之例外(異常)的使用

1、系統定義異常:

異常是程式設計語言提供的一種功能,用來增強程式的健壯性和容錯性。

no_data_fount  (沒有找到資料)
too_many_rows  (select ... into 語句匹配多個行)
zero_divide  (被零除)
value_error (算術或轉換錯誤)
timeout_on_resource

(在等待資源時發生超時)

例子:0不能做分母的異常

declare 
  pnum number;
begin
  pnum := 1/0;
exception
  when zero_divide then
    dbms_output.put_line('0不能做分母');
  when value_error then
    dbms_output.put_line('算術或轉換錯誤');
  when others then
    dbms_output.put_line('其它錯誤');
end;

   2、自定義異常,在宣告中來定義異常

如果遇到異常我們要丟擲異常,丟擲異常的語句是 raise 異常名

例子:查詢部門編號是50的員工姓名

declare 
  no_emp_found exception;
  pename emp.ename%type;
  cursor pemp is select t.ename from emp t where t.deptno=50;
begin
  open pemp;
  fetch pemp into pename;
  if pemp%notfound then
    --丟擲自定義異常
    raise no_emp_found;
  end if;
  close pemp;
exception
  when no_emp_found then
    dbms_output.put_line('沒有找到員工');
  when others then
    dbms_output.put_line('其它錯誤');
end;