作為一門面向過(guò)程的編程語(yǔ)言,PL/SQL中肯定少不了邏輯控制語(yǔ)句.
一奸绷、條件控制語(yǔ)句
1酪呻、IF條件控制語(yǔ)句
和其它編程語(yǔ)言一樣羞迷,PL/SQL中的IF條件控制語(yǔ)句也有三種形式。
形式1:
IF condition THEN
statements;
END IF;
形式2:
IF condition THEN
statements;
ELSE
statements;
END IF;
形式3:
IF condition THEN
statements;
ELSIF condition THEN
statements;
ELSE
statements;
END IF;
2画饥、CASE條件控制語(yǔ)句
簡(jiǎn)單case語(yǔ)句
[ <<label_name>> ]
CASE case_expr --這是一個(gè)變量或者表達(dá)式
WHEN case_value1 THEN
statement;
WHEN case_value2 THEN
statement;
ELSE --當(dāng)所有value都不匹配時(shí)執(zhí)行衔瓮,可省略
statment;
END CASE [label_name];
搜索式case語(yǔ)句
[ <<label_name>> ]
CASE --這里沒(méi)有表達(dá)式
WHEN boolean_expr1 THEN
statement;
WHEN boolean_expr2 THEN
statement;
ELSE --當(dāng)所有 boolean_expr都不成立時(shí)執(zhí)行,可省略
statment;
END CASE [label_name];
二抖甘、LOOP循環(huán)控制語(yǔ)句
在PL/SQL中重復(fù)執(zhí)行一條語(yǔ)句或一組語(yǔ)句热鞍,可以使用循環(huán)控制結(jié)構(gòu),PL/SQL中循環(huán)結(jié)構(gòu)有下面4種形式:
1)基本循環(huán)結(jié)構(gòu)
2)WHILE ... LOOP
3)FOR 循環(huán)
4)CURSOR FOR LOOP:在游標(biāo)中介紹
1衔彻、基本循環(huán)結(jié)構(gòu)
LOOP --循環(huán)開(kāi)始標(biāo)志
statement; --循環(huán)體
END LOOP; --循環(huán)結(jié)束標(biāo)志
示例1:
declare
i number(10);
begin
i := 1;
LOOP
DBMS_OUTPUT.PUT_LINE('i值為:' || i);
EXIT WHEN i >= 10;
i := i+1;
END LOOP;
end;
/
示例2:
declare
i number(10);
begin
i := 1;
LOOP
DBMS_OUTPUT.PUT_LINE('i值為:' || i);
IF i >= 10 THEN
EXIT;
END IF;
i := i+1;
END LOOP;
end;
/
基本循環(huán)結(jié)構(gòu)需要搭配 EXIT 退出循環(huán)薇宠,否則會(huì)一直執(zhí)行下去.
2、WHILE ... LOOP
該循環(huán)結(jié)構(gòu)本身可以終止循環(huán)米奸,當(dāng) WHILE 后面 布爾表達(dá)式 為 true 時(shí)昼接,循環(huán)體將會(huì)執(zhí)行一次,然后重新判斷 布爾表達(dá)式 是否為 true悴晰,直到為 false 時(shí),退出循環(huán).
WHILE boolean_expr --布爾表達(dá)式
LOOP
statement; --循環(huán)體
END LOOP;
示例:
declare
i number(10);
begin
i := 1;
WHILE i <= 10
LOOP
DBMS_OUTPUT.PUT_LINE('i值為:' || i);
i := i+1;
END LOOP;
end;
/
3逐工、FOR 循環(huán)
FOR index IN [REVERSE] --index:循環(huán)次數(shù) REVERSE:循環(huán)方式铡溪,默認(rèn)從下邊界到上邊界,使用之后剛好相反
lower_bound .. upper_bound --分別對(duì)應(yīng)FOR循環(huán)的下邊界泪喊、上邊界棕硫,用..連接
LOOP
statment; --循環(huán)體
END LOOP;
示例:
begin
FOR i IN 1..10
LOOP
DBMS_OUTPUT.PUT_LINE('i:' || i);
END LOOP;
end;
/
當(dāng)lower_bound與upper_bound相等時(shí),循環(huán)只執(zhí)行一次袒啼,同時(shí)哈扮,這兩者也可以用變量來(lái)代替,動(dòng)態(tài)控制循環(huán)范圍.
四蚓再、順序控制語(yǔ)句
PL/SQL中一般都是從前到后的順序執(zhí)行滑肉,同時(shí)也可以使用 GOTO、NULL 來(lái)控制順序.
GOTO:跳轉(zhuǎn)到特定處執(zhí)行隨后的語(yǔ)句.
NULL:不會(huì)執(zhí)行任何操作.