日期:2014-05-17  浏览次数:20819 次

请教PL/SQL 循环问题 希望各位大大多多指教...
请教PL/SQL 循环问题 希望各位大大多多指教... 

Q:我现在要处理一个循环问题,
在一个循环里面执行相关处理,如下:
Loop
执行1,
执行2,
执行3...
end loop;
要求:当在执行到3出现错误时,进行报错,且循环回到从执行1开始。
这个用什么方法?如何实现呢?

请各位大神多多指教。3Q3Q了...


PL/SQL oracle?

------解决方案--------------------
还有一种方式,是可以实现,就是使用GOTO 标签的方式。

在PL/SQL中,使用continue和GOTO。能够解决你的这个问题。
------解决方案--------------------
Loop
 <<MY_CONTINUE>>
 执行1,
 执行2,
 执行3
 (执行3可以写到一个单独的function或者procedure里,如果执行过程中出现异常,记录异常(日志表)同时返回标志位,如flag=‘errror’)
 if flag = 'error' then
    GOTO    MY_CONTINUE;  
 end if; 

 end loop;
------解决方案--------------------
一,continue

在oracle11g以前无法使用continue实现退出当前循环(11g中据说实现了),但是可以用以下方法模拟实现:

declare 
--定义变量
begin
     for i in 1..10 loop --真正的循环
         for j in 1..1 loop --假循环,目的是模拟出continue效果
             if i = 6 then
                exit;--这个exit相当于continue
             end if ;
             dbms_output.put_line(i);
         end loop ;
     end loop;

dbms_output.put_line('over');
end ;

在oracle11g中可以用以下方式实现:

declare 
--定义变量
begin
     for i in 1..10 loop --真正的循环
       if i = 6 then
         continue;--用if语句和continue实现
       end if ;
       dbms_output.put_line(i);