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