2024-03-19
原文作者:吴声子夜歌 原文地址: https://blog.csdn.net/cold___play/article/details/100837922
例外

例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。

系统定义例外
  • No_data_found:没有找到数据
  • 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('1: 0不能做分母');
                            dbms_output.put_line('2: 0不能做分母');
      when others then dbms_output.put_line('其他例外');
    end;

202403192031196961.png

自定义例外

用户可以自定义异常,在声明中来定义异常

    DECLARE
    	自定义异常名 exception;
    DECLARE
    	My_job char(10);
    	v_sal emp.sal%type;
    	No_data exception;
    	cursor c1 is select distinct job from emp order by job;

示例:查询部门号是50的员工

    declare
      no_emp_found exception;
      cursor pemp is
        select t.ename from emp t where t.deptno = 50;
      pename emp.ename%type;
    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;

202403192031200032.png

阅读全文