循环语句分类
loop循环
语法:
LOOP
PLSQL_SENTENCE
EXIT WHEN END_CONDITION_EXP --条件满足就退出
END LOOP;
–打印99乘法表
DECLARE
–定义三个变量,两个乘数一个积
N NUMBER := 1;
M NUMBER := 1;
S NUMBER := 0;
BEGIN
–两层循环
LOOP
–退出循环条件,第二个乘数等于10时退出
EXIT WHEN N = 10;
LOOP
–内循环是当第一个乘数大于第二个乘数时退出
EXIT WHEN M > N;
S := M * N;
–缓存打印,每内循环一轮缓存一次
DBMS_OUTPUT.PUT(RPAD(M || ‘*’ || N || ‘=’ || S, 6, ’ ') || ’ ');
–变量加1
M := M + 1;
END LOOP;
–打印缓存一轮的数据
DBMS_OUTPUT.NEW_LINE();
N := N + 1;
–内循环变量赋1
M := 1;
END LOOP;
END;
注意:
LOOP循环中,程序会先运行一次循环体,再通过EXIT WHEN 决定何时推出循环。
若end_condition_exp为true,则退出循环;若end_condition_exp为false,则再一次执行循环体。
while循环
语法:
WHILE CONDITION_EXP LOOP --条件满足才运行
PLSQL_SENTENCE
END LOOP;
–打印99乘法表
DECLARE
–定义三个变量
N NUMBER:=1;
M NUMBER:=1;
S NUMBER;
BEGIN
–当第一个乘数小于10时进行循环
WHILE N<10 LOOP
WHILE M<=N LOOP
S:=MN;
DBMS_OUTPUT.PUT(RPAD(M || '’ || N || ‘=’ || S, 6, ’ ') || ’ ');
M:=M+1;
END LOOP;
DBMS_OUTPUT.NEW_LINE();
N:=N+1;
M:=1;
END LOOP;
END;
注:loop和while的区别就是,loop是满足条件时退出循环,不满足条件的话就一直循环下去;而while是满足条件时才进入循环,如果不满足条件,
就无法进入循环。
for循环
语法:
FOR VAR_COUNTER IN [REVERSE] LIMIT_LOW…LIMIT_UPP LOOP --LOW 最小值 UPP最大值
PLSQL_SENTENCE --REVERSE 倒序打印
END LOOP;
–打印99乘法表
DECLARE
S NUMBER:=0;
BEGIN
FOR N IN 1…9 LOOP
FOR M IN 1…N LOOP
S:=NM;
DBMS_OUTPUT.PUT(RPAD(M||'‘||N||’=‘||S,6,’ ‘)||’ ');
END LOOP;
DBMS_OUTPUT.NEW_LINE();
END LOOP;
END;
注:for循环的语法最简单的地方就在于它不需要声明变量,可以直接用。
注意:
1.FOR循环是根据循环计数器来控制循环体的执行次数的,因此相较于LOOP循环和WHILE循环,
FOR循环在循环次数上更具可控性。在FOR循环运行时,循环计数器会从小到大(或添加REVERSE关键词变成从大到小)进行计数,
一旦超出循环范围则退出循环。
2.循环计数器通常是一个整数类型的变量,且在使用时不必声明。
循环语句-注意点
1.所有的循环语句必须指定合理准确的退出条件,否则循环体会陷入死循环中无法退出,或直到缓存占满导致程序中断;
2.无论哪种循环语句,最终都是以END LOOP结束书写;
3.不同循环语句之间稍有区别,在使用时一定要区分开:
1)该语句是先执行循环条件还是先执行循环体;
2)该语句是否至少执行一次循环;
3)牵扯到计数时,该语句是先执行循环体还是先执行计数。