我是第一次接触存储过程
先前在书上,网上看到的例子中,存储过程只有一个begin...end,现在接触到一个存储过程中有多个begin...end
我看到的主要有两类;
begin...exception  

begin
...
  begin....end;
...
end;
question:一个begin执行是从上到下,那多个begin执行的流程是怎样的?请指点。

解决方案 »

  1.   

    嵌套~ sql块~一样由上到下~
    如:
    begin
      begin
      
      exception
         --1.这块的plsql异常
      end;  begin
      exception --2.这块的plsql异常
      end;exception
     -- 全局异常
    end;1和2的异常处理是独立的~plsql里分块~begin...end为一块~
      

  2.   

    我大概明白了:
    begin
    -- (1)SQL块
    exception
    --捕获(1)的异常
    end;
    可是:
    begin
    ...
      begin....end;--没有excetion
    ...
    end;
    question 1:
    这种结构是怎么回事啊?
    是不是这个内嵌的begin...end只有加了exception代码才有意义,具体点:
    begin
      aaa;
      begin
         bbb;
      end;
      ccc;
    end;
    相当于:
    begin
      aaa;
      bbb;
      ccc;
    end;
    question 2:
    除了需要捕获exception时使用代码块,还有其他的情况用到代码块吗?
    多谢!!
      

  3.   

    1. 意义在于设计者的看法和定位。2. oracle推荐不要使用匿名块,如果需要这样做,请把它写成procedure/function.
      

  4.   

    把 begin...end 看成()就行了,()中可以套()