1. 程式人生 > >PL/SQL巢狀迴圈操作例項

PL/SQL巢狀迴圈操作例項

PL/SQL允許使用一個迴圈內巢狀另一個迴圈。在PL/SQL巢狀基本LOOP語句的語法如下:


LOOP
   Sequence of statements1
   LOOP
      Sequence of statements2
   END LOOP;
END LOOP;
在PL/SQL 迴圈FOR語句巢狀的語法如下:
FOR counter1 IN initial_value1 .. final_value1 LOOP
   sequence_of_statements1
   FOR counter2 IN initial_value2 .. final_value2 LOOP
      sequence_of_statements2
   END LOOP;
END LOOP;

操作例項如下:

-- Created on 2018/3/26 by E.WANG 

begin
    --使用一個基本巢狀迴圈,找出2-81中的素數
    --素數是指除了1和它本身以外,不能被任何整數整除的數。
    declare 
       --素數範圍
       m number(3);
       --進行判讀的因子
       j number(3);
    begin
      
       /*
       此判斷一個整數m是否是素數,
       只需把m被2~m-1之間的每一個整數去除,
       如果都不能被整除,那麼m就是一個素數。
       */
      
       --初始化變數
       m := 2;
       <<outer_loop>>
       loop
          --初始化變數
          j:= 2;
          --迴圈標記
          <<inner_loop>>
          loop
             --當m能被j整除或m與j相等時,結束該迴圈
             exit when ((mod(m, j) = 0) or (j = m));
             --不滿足上述條件,給j加一繼續當前迴圈
             j := j +1;
          end loop inner_loop;
          --如果m與j相等輸出m值
          if (j = m ) then
              dbms_output.put_line(m || ' is prime');
          end if;
          --m加1進行下一次迴圈
          m := m + 1;
          --當m等於81結束當前迴圈
          exit when m = 81;
       end loop outer_loop;
        /*
       另一種,由於我本機這個沒有sqrt這個函式,在此不做演示。
       具體操作說明如下:
       m不必唄2~m-1之間的每一個整數去除,
       只需被2~√m之間的每一個整數去除就可以了。
       如果m不能被2~√m間任一整數整除,m必定是素數。
       √m:m的開平方
       */
    end;
    
    
    dbms_output.put_line('-------------------9*9-------------------------');
    --九九乘法口訣
    declare 
       mul_1 int;
       mul_2 int;
       mul_result int;
    begin
       <<outter_forloop>>       
       for mul_1 in 1..9 loop
           <<inner_forloop>>
           for mul_2 in 1..9 loop
               mul_result:=mul_1 * mul_2;
               dbms_output.put_line(mul_1 || ' * ' || mul_2 || '= ' ||mul_result);
           end loop;
       end loop;
    end;      
end;

視窗截圖:


執行結果截圖: