一个简单的存储过程如下:
begin
  (1)查询select ;
  (2)更新数值update ;EXCEPTION
   WHEN OTHERS THEN
   (a)rollback;
   (b)更新状态update
   (c)commit;
end;请问,按目前写法的,无异常发生的执行过程是什么?有异常发生的执行顺序是什么?
其实我想问的就是,异常发生后,WHEN OTHERS THEN后面是执行一条命令,还是执行END之前的所有命令?
谢谢。

解决方案 »

  1.   

    无异常(1)查询select ;
      (2)更新数值update ;
    有异常
    a)rollback;
       (b)更新状态update
       (c)commit;
      

  2.   

    异常发生后,WHEN OTHERS THEN后面将执行
       (a)rollback;
       (b)更新状态update
       (c)commit;
      

  3.   


    1.程序开始 begin
    2.查询select 
    如果查询select无异常则到第3步
    如果查询select有异常则到EXCEPTION
    3.更新数值update 
    如果更新数值update无异常则结束过程
    如果更新数值update有异常则到EXCEPTION例外:EXCEPTION
        a)rollback;      --回滚这个过程从开始到异常这步的所有操作
       (b)更新状态update --执行UPDATE操作
       (c)commit;        --提交上述操作大概的流程就是这样的吧
      

  4.   

    也就是说,无异常的情况下,commit就不被执行了对吧。
    谢谢大家,我很穷分不多,请见谅