pl/sql 异常使用

 最近写一些函数已近存储过程时经常用到捕获异常、抛出异常一类的问题,虽然网上有问多这方面的资料,单我这里只是按自己的理解去描述一下在orale中使用异常的方法:

 

一、抛异常:

   . 通过PL/SQL运行时引擎

   . 使用RAISE语句

   . 调用RAISE_APPLICATION_ERROR存储过程

二、使用方法:

         1.当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出,我们可以通过捕获异常获得异常信息

           begin

 

           exception

               when others then

                    v_errorcode := -abs(sqlcode);

                    v_errormsg  := sqlerrm;

           end;

         2. 用户手动抛异常

           begin

             select count(*) into v_count

                 from t_table

             if v_count <= 0 then

                 raise NO_DATA_FOUND;

             end if;

           exception

               when no_data_found then

                   v_errorcode := -1;

                   v_errormsg  := '数据不存在!';

               when others then

                    v_errorcode := -abs(sqlcode);

                    v_errormsg  := sqlerrm;

           end;

           说明:在PL/SQL块的异常部分只有已命名的异常才能被WHEN子串处理,ORACLE包含了一系列已命名的异常,这些异常都声明在STANDARD包中。

          3.RAISE_APPLICATION_ERROR

          begin

             select count(*) into v_count

                 from t_table

             if v_count <= 0 then

                 raise_application_error(-20000,'自定义异常');

             end if;

           exception

               when others then

                    v_errorcode := -abs(sqlcode);

                    v_errormsg  := sqlerrm;

               说明:此时的 sql sqlerrm 为 '自定义异常',其中 raise_application_error 第一个参数,异常代码号范围为 -20000~-20999

           end;

            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值