Oracle的异常处理

异常处理的概念和分类

declare 
   v_name emp.ename%Type;
   v_sal emp.sal%Type;
begin
    select ename,sal  into v_name,v_sal
    from emp  where empno=&no;
    if v_sal<3000 then
       DBMS_OUTPUT.put_line(v_name||'工资是:'||v_sal)
    end if;
Exception
     when no_data_found then
          DBMS_OUTPUT.put_line('不存在该员工');
     when others then

end

什么是异常处理?
异常处理是为了提高程序的健壮性,使用异常处理部分可以有效的解决正常执行过程中可能出现的各种错误,使程序正常运行。

exception
when  异常名称 then
    执行代码
when others then
    执行代码

预定义异常
非预定义异常
自定义异常

示例:
根据输入的工资查询员工的姓名,并输出员工的姓名及工资。
分析:
1:输入工资,需要代替变量&salary
2:根据工资查询员工的姓名,并将查询到的姓名赋值给姓名变量,数据库赋值需要用到select …into
3:考虑到一些特殊的情况,如果没有该工资的员工,该工资对应很多员工

declare
   v_name emp.ename%TYPE;
   v_sal  emp.sal%type:=&salary;
begin
     select ename into v_name from emp where sal=v_sal;
     DBMS_OUTPUT.put_line(v_name || v_sal);
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;

非预定义异常的处理包括3步:
1:在PL/SQL块中定义部分定义异常情况
<异常情况> exception

2:将其定义好的异常情况与标准的ORACLE错误联系起来,使用
PRAGMA EXCEPTION_INIT语句
Pragma exception_init(异常情况,错误代码)

3:在PL/SQL块的异常情况处理部分对异常情况做出相应的处理。

示例:
删除部门表中指定的部门信息
1:dept和emp表之间具有主外键关系,当删除指定部门的信息时,应确保该部门没有该员工


declare
    e_fk Exception;  第一步

    pragma exception_init(e_fk,-2292); 第二步
begin
     delete from dept where deptno=&deptno;
Exception
     when e_fk then       第三步
         DBMS_OUTPUT.put_line('此部门下有员工,不能删除');    
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值