假设我有一个for循环
for i in array.first .. array.last loop
boolean := c(i) > d(i);
if boolean --is true then
exit the loop immediately and also exit the entire procedure
else if the boolean is never true til the end of the loop, exit the loop
and keep running other scripts in this procedure.
我知道'EXIT'关键字需要在循环内部,以便在满足条件时退出循环。并且'RETURN'需要在循环之外,退出程序。
但是如果我把'RETURN'放在循环之外,那么我认为无论循环结果是什么,它都会在循环结束时退出整个过程?
答案 0 :(得分:1)
如果你想要它的教学,你应该使用EXIT退出循环,然后使用RETURN退出程序(复制任何必要的测试),从而遵循结构化编程规则“A程序应该只有一个入口和一个出口“。在实践中,99.999%的程序员只是在循环体内编写RETURN代码,因为A)它更清楚的是发生了什么(你不只是离开循环,你从程序返回),和B )它更短。照你的意愿去做。祝你好运。
答案 1 :(得分:0)
简单的循环。它之所以被称为简单原因:它只是用LOOP关键字开始,以END LOOP语句结束。如果在循环体内执行EXIT,EXIT WHEN或RETURN(或者如果引发异常),循环将终止。
答案 2 :(得分:0)
完成Tamás Kecskeméti link之后,唯一推荐的方法是使用一个while循环,其中包含在开头本身指定的所需条件。
以下是以上链接的摘录:
Code Listing 5: A WHILE loop with one exit
PROCEDURE display_multiple_years (
start_year_in IN PLS_INTEGER
, end_year_in IN PLS_INTEGER)
IS
l_current_year PLS_INTEGER := start_year_in;
BEGIN
WHILE ( l_current_year <= end_year_in
AND total_sales_for_year (l_current_year) > 0)
LOOP
display_total_sales_for_year (l_current_year);
l_current_year := l_current_year + 1;
END LOOP;
END display_multiple_years;
答案 3 :(得分:0)
定义一个异常,当你想要退出raise并以
处理异常时 create procedure exit_loop_example as
exit_loop_exception exception;
begin
/* previous code block */
begin
for i in 1..20 loop
raise exit_loop_exception;
end loop;
exception when
exit_loop_exception then
/* handle exit loop*/
null;
end;
/* next code block */
end;