循环控制相关

-------------------------循环控制:重复的执行某一些操作,以得到想要的结果
有3种循环的语法
1、LOOP循环
2、WHILE循环
3、FOR循环

--------------LOOP循环
--语法结构:
DECLARE
  --声明部分
BEGIN
  --逻辑体
  LOOP
    --循环逻辑体
    
    IF 满足退出循环的条件 THEN
      EXIT;
    END IF;
    
    --退出循环的简写
    EXIT WHEN 退出循环的条件;  
    
  END LOOP;
END;

--需要注意的是:
1、不管三七二十一先进入循环,然后再在循环体里面想办法退出
2、LOOP循环不要忘记退出循环,否则会一直循环下去
3、最后的 END LOOP; 不要忘

--比如:打印1+2+...+100的结果
DECLARE
  X NUMBER := 0;
  Y NUMBER := 0;
BEGIN
  
  LOOP
    X := X + 1;
    Y := Y + X;
    
   /* IF X >= 100 THEN
      EXIT;
    END IF;  */
    EXIT WHEN X >= 100;
    
  END LOOP;
  
  DBMS_OUTPUT.PUT_LINE(Y);
END;


-------------WHILE循环
DECLARE
  --声明部分
BEGIN
  --逻辑体
  WHILE 满足进入循环条件 LOOP 
    --循环逻辑体
  END LOOP;
END;

--需要注意的是:
1、它跟LOOP循环是一个相反的。一个进入后满足退出的条件然后退出,一个是满足进入的条件然后进入
2、当满足一个条件的时候,就进入循环,不满时,就退出循环
3、当一开始就不满足的时候,就跳过该循环操作


--比如:打印1+2+...+100的结果
DECLARE
  X NUMBER := 0;
  Y NUMBER := 0;
BEGIN
  WHILE X < 100 LOOP
    X := X + 1;
    Y := Y + X;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(Y);
END;


------------------FOR循环
DECLARE
  --声明部分
BEGIN
  --逻辑体
  FOR 循环变量 IN 循环下限 .. 循环上限 LOOP 
    --循环逻辑体
  END LOOP;
END;

--需要注意的是:
1、FOR循环的前提是知道要循环多少次
2、用循环下限到循环上限的范围来固定这个次数
3、循环变量在这个范围内每次递增1(就可以实现要循环多少次)
4、循环变量可以定义/声明,也可以不定义/不声明

--比如:打印1+2+...+100的结果
DECLARE
  X NUMBER := 0;
  Y NUMBER := 0;
BEGIN
  FOR Z IN 100 .. 199 LOOP   --100 .. 199 只是为了确定循环次数是100次
    X := X + 1;
    Y := Y + X;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(Y);
END;

--特殊的时候:当变量的变化路径跟循环变量的变化路径(每次加1)一致的时候,可以就直接用循环变量的值来代替变量的值

--比如:打印1+2+...+100的结果
DECLARE
 Y NUMBER := 0;
BEGIN
  FOR X IN 1 .. 100 LOOP  ---这个时候,循环变量的值就不只是为了确定循环次数了,同时还要被使用
    Y := Y + X;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(Y);
END;


--小练习一把:输入一个数,判断该数是否是质数(只能被1和其本身整数),如果是打印该数,如果不是打印 该数“不是质数” 
DECLARE
  X NUMBER := &输入一个数;
  Y NUMBER := 0;
BEGIN
  IF X <= 1 THEN
    DBMS_OUTPUT.PUT_LINE('输入一个大于1的整数');
  ELSE
    IF MOD(X, 1) != 0 THEN
      DBMS_OUTPUT.PUT_LINE('输入一个整数');   
    ELSE
      
      FOR Z IN 1 .. X LOOP
        IF MOD(X, Z) = 0 THEN
          Y := Y + 1;  --记录 X 除以 1 到X 中间所有的数的整除的次数
        END IF;
      END LOOP; 
       
      IF Y = 2 THEN
        DBMS_OUTPUT.PUT_LINE(X || '是质数');
      ELSE
        DBMS_OUTPUT.PUT_LINE(X || '不是质数');
      END IF; 
        
    END IF;
  END IF;
END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值