plsql 例外

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

系统例外

No_Data_Found

--系统例外:no_data_found
DECLARE
 pename emp.ename%TYPE;
BEGIN  
 --查询员工号是1234的员工姓名
 SELECT ename INTO pename FROM emp WHERE empno=1234;
 EXCEPTION
 WHEN no_data_found THEN dbms_output.put_line('没有找到该员工');
 WHEN OTHERS THEN dbms_output.put_line('其他例外');
END;

too_many_rows

--系统例外:too_many_rows
DECLARE
 pename emp.ename%TYPE;
BEGIN  
 --查询所有10号部门的员工姓名
 SELECT ename INTO pename FROM emp WHERE deptno=10;
 EXCEPTION
 WHEN too_many_rows THEN dbms_output.put_line('SELECT INTO 匹配了多行');
 WHEN OTHERS THEN dbms_output.put_line('其他例外');
END;

zero_divide

--系统例外:zero_divide
DECLARE
 pnum NUMBER;
BEGIN  
 pnum := 1/0;
 EXCEPTION
 WHEN zero_divide THEN dbms_output.put_line('0不能做被除数');
 WHEN OTHERS THEN dbms_output.put_line('其他例外');
END;

value_error

--系统例外:value_error
DECLARE
 pnum NUMBER;
BEGIN  
 pnum := 'abc';
 EXCEPTION
 WHEN value_error THEN dbms_output.put_line('算数或者转换错误');
 WHEN OTHERS THEN dbms_output.put_line('其他例外');
END;

自定义例外

定义变量,类型是exception,使用raise抛出自定义例外

--自定义例外:查询50号部门的员工姓名
DECLARE  
 --定义游标,代表50号部门的员工姓名
 CURSOR cemp IS SELECT ename FROM emp WHERE deptno=50;
 pename emp.ename%TYPE;
 --自定义例外
 no_emp_found EXCEPTION;
BEGIN 
 OPEN cemp;
 FETCH cemp INTO pename;
 IF cemp%NOTFOUND THEN
  --抛出例外
  RAISE no_emp_found;
 END IF;
 --Oracle自动启动pmon(process monitor)自动关闭游标
 CLOSE cemp;
 EXCEPTION
 WHEN no_emp_found THEN dbms_output.put_line('没有找到员工');
 WHEN OTHERS THEN dbms_output.put_line('其他例外');
END;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值