Oracle--PL/SQL例外详解

例外

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

系统定义例外
  • 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;

在这里插入图片描述

自定义例外

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

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;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值