更新時間:2021-03-12 17:35:43 來源:動力節點 瀏覽1692次
PL/SQL是Oracle數據庫對SQL語句的擴展,PL/SQL(Procedural Language/SQL)是一種過程化語言,屬于第三代語言,它與C、C++、Java等語言一樣關注于處理細節,可以用來實現比較復雜的業務邏輯。其中PL/SQL循環語句是在一定條件下反復執行某段程序的流程結構,PL/SQL循環語句主要有如下4種:
1.基本LOOP
2.FOR LOOP
3.游標FOR LOOP
4.WHILE LOOP
除此之外,完全退出循環的語句是: EXIT和EXIT WHEN,退出當前循環并進入下一次循環的語句是: CONTINUE和CONTINUE WHEN。下面我們來對PL/SQL循環語句進行一一介紹:
1、基本LOOP語句
基本LOOP語句的語法格式如下
[標簽] LOOP
語句系列
END LOOP [標簽];
為防止無限循環,必須有一個語句或拋出異常來退出循環
2、EXIT語句
EXIT語句無條件的退出當前循環或標簽指定的外層循環
樣例程序如下
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執行后,程序會執行到這里
????DBMS_OUTPUT.PUT_LINE('After loop: x = ' || TO_CHAR(x));END;/
3、EXIT WHEN語句
EXIT WHEN語句的語法格式如下
EXIT WHEN 條件表達式;
當條件表達式為TRUE時就退出當前循環或指定標簽的外層循環,上一個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執行后,程序會執行到這里
????DBMS_OUTPUT.PUT_LINE('After loop: x = ' || TO_CHAR(x));END;/
下面是一個嵌套循環的樣例程序。
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語句,它們的測試條件在尾部而不是在開頭,所以循環體內的語句至少會執行一次,要想模擬這種語句,可以使用:
LOOP
語句系列
EXIT WHEN 條件;
END LOOP;
4、CONTINUE語句
CONTINUE語句無條件退出當前循環或指定標簽的外層循環,并進入下一次循環
5、CONTINUE WHEN語句
CONTINUE WHEN語句的語法格式如下
CONTINUE WHEN 條件表達式;
當條件表達式為TRUE時就退出當前循環或指定標簽的外層循環,并進入下一次循環
6、FOR LOOP語句
當循環索引在指定的值范圍內時FOR LOOP循環執行一系列語句,語法格式如下
[標簽] FOR 索引 IN [REVERSE] 低值..高值 LOOP
一系列語句
END LOOP [標簽];
在不使用REVERSE時,索引的值從低值開始,每次循環后加1,直到等于高值后,循環結束;如果低值比高值大,那么循環永遠不會執行;在使用REVERSE時,索引的值從高值開始,每次循環后減1,直到等于低值后,循環結束;低值比高值大,那么循環永遠不會執行;
在FOR LOOP循環中可以使用EXIT, EXIT WHEN, CONTINUE和CONTINUE WHEN語句來提前退出循環;
FOR LOOP循環索引的概念我們也有必要了解一下:
循環索引這個變量隱式的被聲明為PLS_INTEGER類型局部變量,循環內部的語句可以訪問索引的值,但是不能改變它,而循環外部的語句無法訪問這個索引變量,循環結束后索引變量就被銷毀了,所以有時索引也被稱為循環計數器。
7、WHILE LOOP語句
WHILE LOOP循環語句的語法格式如下
[標簽] WHILE 條件 LOOP
語句系列
END LOOP [標簽];
如果條件的計算結果是TRUE,那么循環就一直執行
以上就是PL/SQL循環語句的部分內容,我們稍加認真地學習,基本上不難掌握大體內容。實在難以理解的地方,我們可以參考本站的PL/SQL教程中給出的實例,可以加深我們的理解,讓PL/SQL的知識更通俗易懂。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習