PL/SQL 流程控制语句-循环语句

循环语句分类

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)牵扯到计数时,该语句是先执行循环体还是先执行计数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值