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