初学Oracle 对一些的loop{//循环体}end loop块不太明白
在一些程序 code里
比如
while(flag = true) {
//循环体
}再比如
for(int i = 0; i < 5; i++){
//循环体
}这里结束循环的标志很明确 第一个是当flag = false时结束循环 , 第二个是在 i >= 5时结束循环。
但是我看了一些loop的循环体,没有明确标识什么情况下end loop。
请指点一二,谢谢。
在一些程序 code里
比如
while(flag = true) {
//循环体
}再比如
for(int i = 0; i < 5; i++){
//循环体
}这里结束循环的标志很明确 第一个是当flag = false时结束循环 , 第二个是在 i >= 5时结束循环。
但是我看了一些loop的循环体,没有明确标识什么情况下end loop。
请指点一二,谢谢。
LOOP
..
END LOOP
就好比程序中的BEGIN ..END;
跳出循环是用EXIT;例如:declare
i number;
begin
i:=0;
loop
i:=i+1;
dbms_output.put_line(i);
if i>5 then
exit;
end if;
end loop;
end;
我书上有这样一段代码,我就看不明白。
Begin
for x in (select * from t)
loop
insert into t values( x.username, x.user_id, x.created);
end loop;
end;
/在我看来这里只给出了一个循环体(loop和end loop之间的内容)。
但是并没有说什么情况下结束执行,也就是执行end loop这一句。
如果在其中加上if xxx --> exit; 我就能理解了。可是这段代码里没有类似的语句。
for x in (select * from t)就是判定循环是否结束
for x in (select * from t)
LOOP
...
END LOOP;
中的SELECT * FROM T这句是产生一个结果集,通过FOR X IN来对这个结果进行遍历。当遍历结束后,自动结束循环。
下面这个代码可能你会更好理解一些。DECLARE
I INTEGER;
BEGIN
FOR I IN 1..10
LOOP
IF I=3 THEN EXIT;
ELSE dbms_output.put_line(i);
END IF;
END LOOP;
END;