oracle 跳出一个循环的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 跳出一个循环的问题相关的知识,希望对你有一定的参考价值。

有一个存储过程,其中有两个镶嵌循环,如:
for t1 in ..... loop
for t2 in .... loop
//满足一定条件时跳出t2这个循环,进行t1的下一个循环,应该怎么写
end loop;
end loop;

exit跳出循环。SQLSERVER用BREAK
if 跳出循环的条件 then
exit;
end if;
或者
exit when 条件(一定是一个返回true或者false的判断条件)
参考技术A Oracle不支持 Break与Continue
Break 使用 EXIT 替换
Continue使用GOTO替换

SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 0;
5 WHILE testvalue < 5 LOOP
6 <<l_Begin_Loop>>
7 testvalue := testvalue + 1;
8 IF testvalue = 2 THEN
9 GOTO l_Begin_Loop;
10 END IF;
11 IF testvalue = 4 THEN
12 EXIT;
13 END IF;
14 dbms_output.put_line( TO_CHAR(testvalue) );
15 END LOOP;
16 END;
17 /
1
3
PL/SQL procedure successfully completed.
参考技术B 个人觉得既然指定了for 循环的条件,就不应该存在跳出循环的判断条件,因为编程的一个宗旨是“one way in,one way out”,即“一个入口,一个出口”,你现在又两个出口(一个跳出循环的条件,一个是for指定的条件),是否不太合适呢,说明你在指定for的条件时并不合适。 参考技术C 用FOR循环的话没有跳出这个功能
你可以用EXCEPTION处理来跳出,或者GOTO也行,或者把FOR循环改成LOOP循环
参考技术D for t1 in ..... loop
for t2 in .... loop
//满足一定条件时跳出t2这个循环,进行t1的下一个循环,应该怎么写
exit when true;
end loop;
end loop;

跳出一个 While...Wend 循环

【中文标题】跳出一个 While...Wend 循环【英文标题】:Break out of a While...Wend loop 【发布时间】:2012-08-25 09:57:41 【问题描述】:

我正在使用 VBA 的 While...Wend 循环。

Dim count as Integer

While True
    count=count+1

    If count = 10 Then
        ''What should be the statement to break the While...Wend loop? 
        ''Break or Exit While not working
    EndIf
Wend

我不想使用像`While count

【问题讨论】:

【参考方案1】:

While/Wend 循环只能通过GOTO 或从外部块退出(Exit sub/function 或其他可退出循环)提前退出

改为 Do 循环:

Do While True
    count = count + 1

    If count = 10 Then
        Exit Do
    End If
Loop

或者循环一定次数:

for count = 1 to 10
   msgbox count
next

(上面可以使用Exit For提前退出)

【讨论】:

请问WhileDo While 有什么区别?【参考方案2】:

另一种选择是将标志变量设置为Boolean,然后根据您的条件更改该值。

Dim count as Integer 
Dim flag as Boolean

flag = True

While flag
    count = count + 1 

    If count = 10 Then
        'Set the flag to false         '
        flag = false
    End If 
Wend

【讨论】:

【参考方案3】:

最好的方法是在While 语句中使用And 子句

Dim count as Integer
count =0
While True And count <= 10
    count=count+1
    Debug.Print(count)
Wend

【讨论】:

以上是关于oracle 跳出一个循环的问题的主要内容,如果未能解决你的问题,请参考以下文章

Oracle存储过程中跳出循环的写法

Oracle存储过程中跳出循环的写法

foreach双重循环怎么在ThinkPHP模板中输出

跳出嵌套循环

如果在 while 循环内,则无法跳出 while 循环

<c:foreach>怎么改变循环次数