循环(普通循环、for、while)
1、普通循环
语法
loop
需要循环执行的代码;(循环体)
exit when 条件 ; --没有break,也没有continue,只有exit
end loop;
注意:
循环的三要素:循环变量有初值,循环变量得有变化,循环条件
--例子:打印1~10;
declare
i integer;
begin
i:=1;
loop
dbms_output.put_line(i);
i:=i+1;
exit when i>10;
end loop;
end;
--打印 1+2+3+。。。+100的和。
declare
i integer;
s integer;
begin
s:=0;
i:=1;
loop
s:=s+i;
i:=i+1;
exit when i>100;
end loop;
dbms_output.put_line(s);
end;
--求1-100之间所有偶数和。
declare
i integer;
s integer;
begin
s:=0;
i:=1;
loop
if mod(i,2)=0 then --能被2整除
s:=s+i;
end if;
i:=i+1;
exit when i>100;
end loop;
dbms_output.put_line(s);
end;
--for循环
--语法:
--for 循环变量名 in 初值 .. 最大值
--loop
--循环体;
--end loop;
--例子:打印1-10
begin
for n in 1..10 --n自动定义,不可以在declare中定义, 步长的绝对值只能是1
loop
dbms_output.put_line(n);
end loop;
end;
--打印1-10的和
declare
s integer:=0;
begin
for n in 1..10
loop
s:=s+n;
end loop;
dbms_output.put_line(s);
end;
--求1-10之间的偶数和
declare
s integer:=0;
begin
for n in 1..10
loop
if mod(n,2)=0 then
s:=s+n;
end if;
end loop;
dbms_output.put_line(s);
end;
--作业:
--1、用for循环打印如下三角形
begin
for i in 1..9
loop
for j in 1..i
loop
dbms_output.put('*');
end loop;
dbms_output.put_line('');--控制换行
end loop;
end;
--2、九九乘法表
declare
i integer;
j integer;
begin
for i in 1..9
loop
for j in 1..i
loop
dbms_output.put(j||'*'||i||'='||i*j||' ');
end loop;
dbms_output.put_line('');
end loop;
end;