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;
窗口截图:
执行结果截图: