PL/SQL异常操作

PL/SQL支持程序员在程序中使用异常块捕获程序运行
中出现的错误等异常信息,分为:
1、系统定义的异常
2、用户定义的异常

系统级异常

–语法如下:

begin
​
exception
​
when 异常名then
​
   语句...when others then
​
   语句...end;

案例:
查询部门表中有某个编号的部门,给其一个不存在的编号来演示NO_DATA_FOUND异常:该异常在SELECT INTO语句查询不到结果时触发.
另外给其一个能够返回多个行记录的编码来演示TOO_MANY_ROWS异常:该异常在SELECT INTO语句查询后返回多个行记录时触发.

declare
​
    dnum number:=60;
​
    depts dept%rowtype;
​
    dna  dept.dname%type;beginselect * into depts.deptno,dna,depts.loc from dept where deptno>dnum;
​
    dbms_output.put_line('部门编号:'||depts.deptno||',部门名称:'||dna||',城
​
                          市:'||depts.loc);
​
exception
​
    when NO_DATA_FOUND then
​
        dbms_output.put_line('没有查找到数据');when TOO_MANY_ROWS then
​
        dbms_output.put_line('返回了多个行记录');when others then
​
        dbms_output.put_line('其他异常');end;

自定义异常
自定义异常需要现在declare中声明,类型为exception类型,然后需要在begin中给其设置触发条件,然后就可以在exception后的when中使用.

自定义异常三步骤:

1.declare中定义异常

2.begin中设置触发条件,由raise关键字触发.注: raise中文发音:瑞爱Z

3.exception中使用

案例:
查询指定id的员工名字来演示自定义异常

declare
​
   cid number:=-1;
​
   cname emp.ename%type;
​
   ex_invalid_id  exception;                    ---1.定义异常beginif cid <0 then                              ---2.设定触发条件
​
         raise ex_invalid_id;end if;select ename into cname from emp where empno=cid;
​
    dbms_output.put_line('员工名字为:'||cname);
​
exception
​
 when ex_invalid_id then                        ---3.使用异常
​
        dbms_output.put_line('id不可用,不能为负数');when no_data_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、付费专栏及课程。

余额充值