官术网_书友最值得收藏!

6.3 循環語句

循環語句可以控制程序多次重復地執行某一組語句。在PL/SQL中,常用的循環語句有3種類型,即LOOP循環、WHILE循環和FOR循環。在這幾種基本循環的基礎上又可以演變出許多嵌套循環控制,本節將介紹最基本的循環控制語句。

6.3.1 LOOP…END LOOP循環

LOOP循環也是最基本的循環,也稱為“無條件的循環”。在這種類型的循環中,如果沒有指定EXIT語句,循環將一直運行,即出現死循環,死循環是應該盡量避免的。因此,在LOOP循環中必須指定EXIT語句,以便循環停止執行。

LOOP循環的語法格式如下:

      loop
         statements;
         exit when condition
      end loop;

在循環的第n次重復或迭代過程中,都要檢查退出條件表達式是否為真。如果表達式為真,則它會跳過EXIT后的所有語句,并跳到代碼中END LOOP后的第一個語句。如果開始就滿足了WHEN所給出的條件,LOOP和EXIT之間的語句只會被執行一次,但如果沒有WHEN條件語句,則循環會一直執行,這種情況應該盡量避免。

例如,下面的循環語句將依次執行輸出1~10的平方數。

在上面的程序塊中,每一次循環均將變量I加1,當加到10時,滿足循環出口條件終止循環。

6.3.2 WHILE循環

另一種循環類型是WHILE循環,它適用于事先無法知道控制循環終止變量值的情況。與LOOP循環的不同之處在于,WHILE循環在循環的頂部包括了判斷條件,這樣在每次執行循環時,都將判斷該條件。如果判斷條件為TRUE,那么循環將繼續執行。如果判斷條件為FALSE,那么循環將會停止。

WHILE循環的語法結構如下:

      while condition
      loop
         statements;
      end loop;

在執行WHILE循環時,首先會檢查判斷條件,如果判斷條件開始就是FALSE,程序將直接執行END LOOP后面的語句,該項循環將一次都不執行。如果判斷條件為TRUE,則執行循環體內的語句,然后再檢查判斷條件。

在下面的程序塊中,將使用WHILE循環打印50以內能被3整除的整數。

只有當條件滿足時,WHILE循環體才會被執行。

6.3.3 FOR循環

在上面的WHILE循環中,為了防止出現死循環,需要在循環內不斷修改判斷條件。而FOR循環則使用一個循環記數器,并通過它來控制循環執行的次數。該計數器可以從小到大進行記錄,也可以相反,從大到小進行記錄。如果不滿足循環條件,則終止循環。FOR循環的語法結構如下:

      for loop_variable_name in [reverse] lower_bound…upper_bound
      loop
         statements;
      end loop

在上面的語法中,LOOP_VARIABLE_NAME參數指定循環記數器,在這里既可以使用已有的變量,也可以使用一個新的變量。循環記數器按照步長以1遞增,當使用關鍵字REVERSE時表示遞減。LOWER_BOUND和UPPER_BOUND則指定了循環記數器的上限和下限。

下面的程序通過FOR循環計算1~100的整數之和。

在上面的程序中,循環記數器I不需要在DECLARE部定義,它屬于FOR循環的一部分。控制記數器I的取值將從1~100依次加1,這樣明確了循環的執行次數。

提示:

在FOR循環中的循環記數器只能在循環體內使用。

當使用關鍵字REVERSE時,循環記數器將自動減1,并強制記數器的取值從上限值到下限值。下面的程序將打印1~20之間能被3整除的數。

主站蜘蛛池模板: 科技| 建始县| 长宁县| 应城市| 岳池县| 苍溪县| 布拖县| 修武县| 东乌珠穆沁旗| 涪陵区| 四川省| 崇仁县| 鄄城县| 上蔡县| 芦溪县| 利川市| 宝坻区| 固原市| 吉首市| 枞阳县| 财经| 婺源县| 灵石县| 玛多县| 南丹县| 浙江省| 张掖市| 霍邱县| 龙川县| 德江县| 望江县| 石屏县| 梅河口市| 古浪县| 富蕴县| 郴州市| 邢台县| 禄丰县| 永昌县| 磴口县| 阳朔县|