oracle 跳出一个循环的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 跳出一个循环的问题相关的知识,希望对你有一定的参考价值。
有一个存储过程,其中有两个镶嵌循环,如:
for t1 in ..... loop
for t2 in .... loop
//满足一定条件时跳出t2这个循环,进行t1的下一个循环,应该怎么写
end loop;
end loop;
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
提前退出)
【讨论】:
请问While
和Do 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 跳出一个循环的问题的主要内容,如果未能解决你的问题,请参考以下文章