控制結(jié)構(gòu)
控制結(jié)構(gòu)控制PL/SQL程序流程的代碼行,PL/SQL支持條件控制和循環(huán)控制結(jié)構(gòu)。
語(yǔ)法和用途
IF..THEN
語(yǔ)法:
IF condition THEN Statements 1; Statements 2; .... END IF
|
IF語(yǔ)句判斷條件condition是否為T(mén)RUE,如果是,則執(zhí)行THEN后面的語(yǔ)句,如果condition為false或NULL則跳過(guò)THEN到END IF之間的語(yǔ)句,執(zhí)行END IF后面的語(yǔ)句。
IF..THEN...ELSE 語(yǔ)法:
IF condition THEN Statements 1; Statements 2; .... ELSE Statements 1; Statements 2; .... END IF |
如果條件condition為T(mén)RUE,則執(zhí)行THEN到ELSE之間的語(yǔ)句,否則執(zhí)行ELSE到END IF之間的語(yǔ)句。
IF 可以嵌套,可以在IF 或IF ..ELSE語(yǔ)句中使用IF或IF..ELSE語(yǔ)句。
if (a>b) and (a>c) then g:=a; else g:=b; if c>g then g:=c; end if end if |
IF..THEN..ELSIF 語(yǔ)法:
IF condition1 THEN statement1; ELSIF condition2 THEN statement2; ELSIF condition3 THEN statement3; ELSE statement4; END IF; statement5;
|
如果條件condition1為T(mén)RUE則執(zhí)行statement1,然后執(zhí)行statement5,否則判斷condition2是否為T(mén)RUE,若為T(mén)RUE則執(zhí)行statement2,然后執(zhí)行statement5,對(duì)于condition3也是相同的,如果condition1,condition2,condition3都不成立,那么將執(zhí)行statement4,然后執(zhí)行statement5。
循環(huán)控制 循環(huán)控制的基本形式是LOOP語(yǔ)句,LOOP和END LOOP之間的語(yǔ)句將無(wú)限次的執(zhí)行。LOOP語(yǔ)句的語(yǔ)法如下:
LOOP
statements;
END LOOP
LOOP和END LOOP之間的語(yǔ)句無(wú)限次的執(zhí)行顯然是不行的,那么在使用LOOP語(yǔ)句時(shí)必須使用EXIT語(yǔ)句,強(qiáng)制循環(huán)結(jié)束,例如:
X:=100; LOOP X:=X+10; IF X>1000 THEN EXIT; END IF END LOOP; Y:=X; |
此時(shí)Y的值是1010.
EXIT WHEN語(yǔ)句將結(jié)束循環(huán),如果條件為T(mén)RUE,則結(jié)束循環(huán)。
X:=100; LOOP X:=X+10; EXIT WHEN X>1000; X:=X+10; END LOOP; Y:=X;
|
WHILE..LOOP WHILE..LOOP有一個(gè)條件與循環(huán)相聯(lián)系,如果條件為T(mén)RUE,則執(zhí)行循環(huán)體內(nèi)的語(yǔ)句,如果結(jié)果為FALSE,則結(jié)束循環(huán)。
X:=100; WHILE X<=1000 LOOP X:=X+10; END LOOP; Y=X; |
FOR...LOOP 語(yǔ)法:
FOR counter IN [REVERSE] start_range....end_range LOOP statements; END LOOP; |
LOOP和WHILE循環(huán)的循環(huán)次數(shù)都是不確定的,F(xiàn)OR循環(huán)的循環(huán)次數(shù)是固定的,counter是一個(gè)隱式聲明的變量,他的初始值是start_range,第二個(gè)值是start_range+1,直到end_range,如果start_range等于end _range,那么循環(huán)將執(zhí)行一次。如果使用了REVERSE關(guān)鍵字,那么范圍將是一個(gè)降序。
X:=100; FOR v_counter in 1..10 loop x:=x+10;
end loop y:=x; |
如果要退出for循環(huán)可以使用EXIT語(yǔ)句。
標(biāo)簽 用戶可以使用標(biāo)簽使程序獲得更好的可讀性。程序塊或循環(huán)都可以被標(biāo)記。標(biāo)簽的形式是<