更新時間:2021-03-12 17:35:43 來源:動力節(jié)點(diǎn) 瀏覽2084次
PL/SQL是Oracle數(shù)據(jù)庫對SQL語句的擴(kuò)展,PL/SQL(Procedural Language/SQL)是一種過程化語言,屬于第三代語言,它與C、C++、Java等語言一樣關(guān)注于處理細(xì)節(jié),可以用來實(shí)現(xiàn)比較復(fù)雜的業(yè)務(wù)邏輯。其中PL/SQL循環(huán)語句是在一定條件下反復(fù)執(zhí)行某段程序的流程結(jié)構(gòu),PL/SQL循環(huán)語句主要有如下4種:
1.基本LOOP
2.FOR LOOP
3.游標(biāo)FOR LOOP
4.WHILE LOOP
除此之外,完全退出循環(huán)的語句是: EXIT和EXIT WHEN,退出當(dāng)前循環(huán)并進(jìn)入下一次循環(huán)的語句是: CONTINUE和CONTINUE WHEN。下面我們來對PL/SQL循環(huán)語句進(jìn)行一一介紹:
1、基本LOOP語句
基本LOOP語句的語法格式如下
[標(biāo)簽] LOOP
語句系列
END LOOP [標(biāo)簽];
為防止無限循環(huán),必須有一個語句或拋出異常來退出循環(huán)
2、EXIT語句
EXIT語句無條件的退出當(dāng)前循環(huán)或標(biāo)簽指定的外層循環(huán)
樣例程序如下
DECLARE
????x NUMBER := 0;BEGIN
????LOOP
????????DBMS_OUTPUT.PUT_LINE('Inside loop: x = ' || TO_CHAR(x));
????????x := x + 1;
????????IF x > 3 THEN
????????????EXIT;
????????END IF;
????END LOOP;
????-- EXIT執(zhí)行后,程序會執(zhí)行到這里
????DBMS_OUTPUT.PUT_LINE('After loop: x = ' || TO_CHAR(x));END;/
3、EXIT WHEN語句
EXIT WHEN語句的語法格式如下
EXIT WHEN 條件表達(dá)式;
當(dāng)條件表達(dá)式為TRUE時就退出當(dāng)前循環(huán)或指定標(biāo)簽的外層循環(huán),上一個EXIT語句的樣例程序可以改寫為:
DECLARE
????x NUMBER := 0;BEGIN
????LOOP
????????DBMS_OUTPUT.PUT_LINE('Inside loop: x = ' || TO_CHAR(x));
????????x := x + 1;
????????EXIT WHEN x > 3
????END LOOP;
????-- EXIT執(zhí)行后,程序會執(zhí)行到這里
????DBMS_OUTPUT.PUT_LINE('After loop: x = ' || TO_CHAR(x));END;/
下面是一個嵌套循環(huán)的樣例程序。
DECLARE
????s PLS_INTEGER := 0;
????i PLS_INTEGER := 0;
????j PLS_INTEGER;BEGIN
????<<outer_loop>>
????LOOP
????????i := i + 1;
????????j := 0;
????????<<inner_loop>
????????LOOP
????????????j := j + 1;
????????????s := s + i * j;
????????????EXIT inner_loop WHEN (j > 5);
????????????EXIT outer_loop WHEN ((i * j) > 15);
????????END LOOP inner_loop;
????END LOOP outer_loop;
????DBMS_OUTPUT.PUT_LINE('The sum of products equals: ' || TO_CHAR(s));END;/
有些語言擁有LOOP UNTIL或REPEAT UNTIL語句,它們的測試條件在尾部而不是在開頭,所以循環(huán)體內(nèi)的語句至少會執(zhí)行一次,要想模擬這種語句,可以使用:
LOOP
語句系列
EXIT WHEN 條件;
END LOOP;
4、CONTINUE語句
CONTINUE語句無條件退出當(dāng)前循環(huán)或指定標(biāo)簽的外層循環(huán),并進(jìn)入下一次循環(huán)
5、CONTINUE WHEN語句
CONTINUE WHEN語句的語法格式如下
CONTINUE WHEN 條件表達(dá)式;
當(dāng)條件表達(dá)式為TRUE時就退出當(dāng)前循環(huán)或指定標(biāo)簽的外層循環(huán),并進(jìn)入下一次循環(huán)
6、FOR LOOP語句
當(dāng)循環(huán)索引在指定的值范圍內(nèi)時FOR LOOP循環(huán)執(zhí)行一系列語句,語法格式如下
[標(biāo)簽] FOR 索引 IN [REVERSE] 低值..高值 LOOP
一系列語句
END LOOP [標(biāo)簽];
在不使用REVERSE時,索引的值從低值開始,每次循環(huán)后加1,直到等于高值后,循環(huán)結(jié)束;如果低值比高值大,那么循環(huán)永遠(yuǎn)不會執(zhí)行;在使用REVERSE時,索引的值從高值開始,每次循環(huán)后減1,直到等于低值后,循環(huán)結(jié)束;低值比高值大,那么循環(huán)永遠(yuǎn)不會執(zhí)行;
在FOR LOOP循環(huán)中可以使用EXIT, EXIT WHEN, CONTINUE和CONTINUE WHEN語句來提前退出循環(huán);
FOR LOOP循環(huán)索引的概念我們也有必要了解一下:
循環(huán)索引這個變量隱式的被聲明為PLS_INTEGER類型局部變量,循環(huán)內(nèi)部的語句可以訪問索引的值,但是不能改變它,而循環(huán)外部的語句無法訪問這個索引變量,循環(huán)結(jié)束后索引變量就被銷毀了,所以有時索引也被稱為循環(huán)計數(shù)器。
7、WHILE LOOP語句
WHILE LOOP循環(huán)語句的語法格式如下
[標(biāo)簽] WHILE 條件 LOOP
語句系列
END LOOP [標(biāo)簽];
如果條件的計算結(jié)果是TRUE,那么循環(huán)就一直執(zhí)行
以上就是PL/SQL循環(huán)語句的部分內(nèi)容,我們稍加認(rèn)真地學(xué)習(xí),基本上不難掌握大體內(nèi)容。實(shí)在難以理解的地方,我們可以參考本站的PL/SQL教程中給出的實(shí)例,可以加深我們的理解,讓PL/SQL的知識更通俗易懂。

初級 202925

初級 203221

初級 202629

初級 203743