请教PL/SQL 循环问题 希望各位大大多多指教...
请教PL/SQL 循环问题 希望各位大大多多指教...
Q:我现在要处理一个循环问题,
在一个循环里面执行相关处理,如下:
Loop
执行1,
执行2,
执行3...
end loop;
要求:当在执行到3出现错误时,进行报错,且循环回到从执行1开始。
这个用什么方法?如何实现呢?
请各位大神多多指教。3Q3Q了...
------解决方案--------------------还有一种方式,是可以实现,就是使用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);