`
zpx138332
  • 浏览: 44730 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类

oracle基础总结(十五)

阅读更多

                              异常处理

异常是oracle数据库中的PL/SQL代码执行期间出现的错误。无论任何时候,当PL/SQL引擎执行代码时,都可能语带异常。当产生异常时,PL/SQL会将程序控制转到程序块的异常部分。

  如果在程序块中没有异常处理,那么异常就会传播,或者发往程序块调用者。例如,如果用户创建的程序块中没有异常处理部分,那么任何异常都会被发送到SQL*Plus中,SQL*Plus处理异常的方法就是在屏幕上显示异常信息。

   Oracle3中类型的异常:

预定义异常:

    Oracle为用户提供了大量的在PL/SQL中使用的预定义异常,已以检查用户代码失败的一般原因,他们都定义在Oracle的核心PL/SQL库中,用户可以在自己的PL/SQL异常处理部分使用名称对其进行标识。对这种异常情况的处理,无需再程序中定义,由Oracle自动将其引发。

非预定义异常:

即其他标准的Oracle错误。对这种异常情况的处理,需要用户在程序中定义,然后由oracle 自动将其引发。

自定义异常

        如果程序设计人员认为某种情况违反了业务逻辑,则设计人员可明确定义并引发异常。

异常处理部分一般放在PL/SQL程序的后半部分,其结构如下:

   EXCEPTION

       WHEN  first_exception THEN <code to handle first exception>

       WHEN second_exception THEN <code to handle second exception>

       WHEN OTHERS THEN<code to handle others exception>

END;

 

Oracle预定义的异常

         信息

          异常名称

           说明

ORA-0001

DUP-VAL-ON-INDEX

试图破坏一个唯一性的限制

ORA-0051

Timeout-on-resource

在等待资源时发生超时

ORA-0061

Transaction-backed-out

由于发生死锁,事务被撤销

ORA-1001

Invalid_CURSOR

试图使用一个无效的游标

ORA-1012

Not-logged-on

没有连接到oracle

ORA-1017

Login-denied

无效的用户名口令

ORA-1403

NO-DATA-FOUND

SELECT  INTO没有找到数据

ORA-1422

TOO_MANY_ROWS

SELECT  INTO返回多行

ORA-1476

Zero-divide

试图被零除

ORA-1722

Invalid-NUMBER

转换一个数字失败

ORA-6500

Storage-error

内存不够引发的内部错误

ORA-6501

Program-error

内部错误

ORA-6502

Value-error

转换或截断错误

ORA-6504

Rowtype-mismatch

主变量和游标类型不兼容

ORA-6511

CURSOR-ALERADY-OPEN

试图打开一个已经打开的游标时,将产生这样的错误

ORA-6530

Access-INTO-null

试图为null对象属性赋值

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics