SQL> Declare 2 l_Continue Boolean Default True; 3 Begin 4 For i In 1 .. 10 Loop 5 If i = 5 Then 6 l_Continue := False; 7 End If; 8 9 If l_Continue Then 10 Insert Into T (Id, Name) Values (i, 'Loop count'); 11 End If; 12 End Loop; 13 14 Insert Into T (Id, Name) Values (Null, 'Done!'); 15 End;没有CONTINUE,只能自己判断循环体是否需要执行
基本要靠if语句或者是goto+标签,如果里面还有循环,也可以exit+标签
在循环中,是绝对不建议强制中 EXIT 的。 如果你确定在你的 FORLOOP。。END LOOP;中途会条出,就不要用FOR。专家建议用WHILE,declare insert_fail BOOLEAN; /*用来判断你的条件的,如果FALSE,就条出循环*/ I NUMBER(2); /*用来保存你的FOR XXX in YYY 的YYY*/ BEGIN I := 1; WHILE insert_fail loop INSERT INTO T_V......; I := INC(I); if i = 5 + x then insert_fail := false; end loop; END;
2 l_Continue Boolean Default True;
3 Begin
4 For i In 1 .. 10 Loop
5 If i = 5 Then
6 l_Continue := False;
7 End If;
8
9 If l_Continue Then
10 Insert Into T (Id, Name) Values (i, 'Loop count');
11 End If;
12 End Loop;
13
14 Insert Into T (Id, Name) Values (Null, 'Done!');
15 End;没有CONTINUE,只能自己判断循环体是否需要执行
如果你确定在你的 FORLOOP。。END LOOP;中途会条出,就不要用FOR。专家建议用WHILE,declare
insert_fail BOOLEAN; /*用来判断你的条件的,如果FALSE,就条出循环*/
I NUMBER(2); /*用来保存你的FOR XXX in YYY 的YYY*/
BEGIN
I := 1;
WHILE insert_fail
loop
INSERT INTO T_V......;
I := INC(I);
if i = 5 + x then
insert_fail := false;
end loop;
END;
我指的是跳出当前循环,不是说跳出整个循环