BEGIN
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
FOR I IN 1 .. 10 LOOP
FOR J IN 1..20 LOOP
DBMS_OUTPUT.PUT_LINE('J IS :'|| J);
EXIT WHEN J = 10;
END LOOP INNER;
DBMS_OUTPUT.PUT_LINE('I IS:'||I);
EXIT WHEN I = 5;
END LOOP OUTER;
END;
exit when 是跳出整個循環(huán),11g里面才有continue的語法。
如果表中存在數(shù)據(jù)的話,沒差別。
但是如果表中沒有數(shù)據(jù)的話,第一個不會打印任何結(jié)果,第二個會打印一個【'學(xué)號:'',姓名:''】
***補充:****
更正:
如果表中存在數(shù)據(jù)的話,第二個的最后一條記錄重復(fù)出現(xiàn)一次。
但是如果表中沒有數(shù)據(jù)的話,第一個不會打印任何結(jié)果,第二個會打印一個【'學(xué)號:'',姓名:''】
*************
@@@@補充2:@@@@@
出現(xiàn)重復(fù)記錄的原因(以兩條數(shù)據(jù)為例):
第一種情況:
1、循環(huán)外先fetch一條,發(fā)現(xiàn)不是mycur%notfound,進入循環(huán)體打印第一條記錄。
2、再fetch一條,發(fā)現(xiàn)不是mycur%notfound,繼續(xù)循環(huán)打印第二條記錄。
3、再fetch一條,發(fā)現(xiàn)是mycur%notfound,停止循環(huán)。
第二種情況:
1、直接進入循環(huán)fetch一條,發(fā)現(xiàn)不是mycur%notfound,打印第一條記錄。
2、再循環(huán)fetch一條,發(fā)現(xiàn)不是mycur%notfound,打印第二條記錄。
3、再循環(huán)fetch一條,發(fā)現(xiàn)是mycur%notfound,但程序順序執(zhí)行又執(zhí)行了一遍打印,這個時候因為沒有記錄產(chǎn)生,變量中存放的就是上一條記錄,所以重復(fù)打印第二條記錄后,退出循環(huán)。
@@@@@@@@@@@@@@@@@@@@@@@@@
#######補充3:###########
不要管循環(huán)幾次(我舉例子是為了方便理解,既然理解不了就不要想了)。你想:程序是順序執(zhí)行的,第一種情況循環(huán)里面的fetch后直接跟的是循環(huán)停止條件,這樣fetch到底后直接跳出循環(huán)。第二種情況fetch后跟的是打印,這樣fetch到底后肯定會先打印再停止循環(huán),而打印的結(jié)果就是上一次殘留的記錄,就是最后一條記錄。
########################
--
以上,希望對你有所幫助。
exit跳出循環(huán),你是說要continue的那,這個似乎沒有,可以用if else 來解決。
begin
for?i?in?1..10?loop
if?i3?then
dbms_output.put_line(i);
if?i=5?then
exit;
end?if?;
end?if;
end?loop;
end;
使用游標(biāo)的時候一定要控制跳出循環(huán)的條件,
每個循環(huán)結(jié)束記得fetch下一跳數(shù)據(jù),不然就會無限循環(huán)。
你的功能是插入數(shù)據(jù),在做INSERT這段,用BEGIN END單獨做成一個BLOCK吧,
寫個EXCEPTION, WHEN OTHERS THEN EXIT;
我覺得基本就這幾點會出現(xiàn)問題吧,你再看看吧。
loop循環(huán)有3種
第一種直接loop 用exit when 退出
第二種是for loop 他用 for i in ... loop
第三種是while loop
個人覺得既然指定了for
循環(huán)的條件,就不應(yīng)該存在跳出循環(huán)的判斷條件,因為編程的一個宗旨是“one
way
in,one
way
out”,即“一個入口,一個出口”,你現(xiàn)在又兩個出口(一個跳出循環(huán)的條件,一個是for指定的條件),是否不太合適呢,說明你在指定for的條件時并不合適。