WEB开发网
开发学院数据库Oracle PL/SQL的异常处理机制的初步探讨 阅读

PL/SQL的异常处理机制的初步探讨

 2007-05-12 12:24:06 来源:WEB开发网   
核心提示:PL/SQL处理异常不同于其他程序语言的错误管理方法,PL/SQL的异常处理机制与ADA很相似,PL/SQL的异常处理机制的初步探讨,有一个处理错误的全包含方法,当发生错误时,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器,你只需简单的在程序中使用下面的语句:RAISE TIMEOUT_ON

PL/SQL处理异常不同于其他程序语言的错误管理方法,PL/SQL的异常处理机制与ADA很相似,有一个处理错误的全包含方法。当发生错误时,程序无条件转到异常处理部分,这就要求代码要非常干净并把错误处理部分和程序的其它部分分开。oracle允许声明其他异常条件类型以扩展错误/异常处理。这种扩展使PL/SQL的异常处理非常灵活。

当一个运行时错误发生时,称为一个异常被抛出。PL/SQL程序编译时的错误不是能被处理得异常,只有在运行时的异常能被处理。在PL/SQL程序设计中异常的抛出和处理是非常重要的内容。

抛出异常

由三种方式抛出异常:

. 通过PL/SQL运行时引擎;

. 使用RAISE语句;

. 调用RAISE_APPLICATION_ERROR存储过程。

当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。异常也可以通过RAISE语句抛出:  RAISE exception_name;

显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。例如,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器,你只需简单的在程序中使用下面的语句:  RAISE TIMEOUT_ON_RESOUCE;

下面看一个订单输入系统,当库存小于订单时抛出一个inventory_too_low异常。  DECLARE
  inventory_too_low EXCEPTION;
  ---其他声明语句
  BEGIN
  .
  .
  IF order_rec.qty>inventory_rec.qty THEN
  RAISE inventory_too_low;
  END IF
  .
  .
  EXCEPTION
  WHEN inventory_too_low THEN
  order_rec.staus:='backordered';
  replenish_inventory(inventory_nbr=>
  inventory_rec.sku,min_amount=>order_rec.qty-inventory_rec.qty);
  END;

1 2 3 4 5  下一页

Tags:PL SQL 异常

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接