异常处理

本文详细介绍了Oracle数据库中的异常处理机制,包括预定义异常如Dup_val_on_index、Invalid_cursors等,以及如何使用EXCEPTION结构来捕获并处理这些异常。此外,还提供了自定义异常的示例代码。
摘要由CSDN通过智能技术生成

异常处理

一、预定义异常:

Dup_val_on_index:试图向唯一索引列插入重复值,相当于建立了一个唯一索引 然后再向这个索引的列中插入一条重复的数据就会异常。

Invalid_cursors:试图进行非法的游标操作

Invalid_number : 试图将字符串转换为数字

no_data_found : select into 语句没有返回任何记录

Too_many_rows : select into 语句返回超过1条记录

Zero_divide : 试图除以 0

Cursor_already_open : 试图打开一个已经打开的游标

Others :包括所有异常

 

二、异常处理语法结构:

   EXCEPTION  --异常开始

           WHEN 异常名1 THEN

       --对应的异常处理

1、实例:

DECLARE

      newSal emp.sal%TYPE;

BEGIN 

      select sal into newSal from emp;

EXCEPTION

      when too_many_rows then     --超过记录用too_many_rows

        dbms_output.put_line('返回的记录太多了');

      when others then            --其他异常则输出

        dbms_output.put_line('未知异常');

END;

 

 三、自定义异常:

DECLARE

      newSal emp.sal%TYPE;

      myexp exception;  --声明异常变量

BEGIN 

      select sal into newSal from emp where rownum=1;

      if newsal>500 then     --情况出现时就调用异常

       raise myexp;

      end if;

EXCEPTION

      when too_many_rows then     --超过记录用too_many_rows

        dbms_output.put_line('返回的记录太多了');

      when myexp then

        dbms_output.put_line('工资不能超过500');

      when others then            --其他异常则输出

        dbms_output.put_line('未知异常');

END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值