当前位置: 代码网 > it编程>数据库>Oracle > Oracle中的循环之FOR循环、WHILE循环和LOOP循环详解

Oracle中的循环之FOR循环、WHILE循环和LOOP循环详解

2025年06月09日 Oracle 我要评论
oracle中的循环常用的有:for循环、while循环和loop循环一、for循环1.for循环语法结构declare --不声明变量,可以不写 begin for 循环变量 in

oracle中的循环常用的有:for循环、while循环和loop循环

一、for循环

1.for循环语法结构

declare   --不声明变量,可以不写
       
begin
  for 循环变量 in  1..10循环下限 .. 循环上限 loop ------循环变量 每次自增1
    循环体;
    end loop;
end;

示例:循环打印1~10

declare
begin
    for i in 1..10
        loop
            dbms_output.put_line(i);
        end loop;
end;

示例:用户输入一个数字x,循环打印 1~x

declare
    x number:=:input;
begin
    for i in 1..x
        loop
            dbms_output.put_line(i);
        end loop;
end;

示例:用户输入一个数字x,打印 1+2+3+..+x 的和是多少

declare
    x number := :input;
    v number := 0;-- 需要有一个变量存放每次累加后的和
begin
    for i in 1..x
        loop
            v := v + i;
        end loop;
    dbms_output.put_line(v);
end;

计算 1 到 10 的数字中偶数的累加值

declare
    v number := 0;-- 需要有一个变量存放每次累加后的和
begin
    for i in 1..10
        loop
            v := v + i;
        end loop;
    dbms_output.put_line(v);
end;  -- 55

二、while循环

1.while循环语法结构

declare

begin
  while 进入循环的条件 loop
    --循环体
  end loop;
end;

示例:循环打印1~10 以及 输出格式:

  • 编码:1
  • 编码:2
  • ...
declare
    v number := 1;  -- 声明循环变量
begin
    while v <= 10
        loop
            dbms_output.put_line('编码:' || v);
            v := v + 1; -- 自增
        end loop;
end;

示例:打印100以内,所有偶数(大于0 从2开始到100结束)

declare
    v number := 2;
begin
    while v <= 100
        loop
            dbms_output.put_line(v);
            v := v + 2; -- 自增
        end loop;
end;

示例:接收用户输入的数字 x,判断 x 大于10 则 打印"您输入的值过大,请重新输入!" ,如果不大于10,则打印 x 的阶乘,比如输入 6 ,输出 "6的阶乘为 720"

declare
    x number := :input; -- 输入值
    i number := 1;-- 计数器
    v number := 1;-- 阶乘累加值
begin
    if x > 10 then
        dbms_output.put_line('您输入的值过大,请重新输入!');
    else
        while i <= x -- 一定是计数器<=输入值(上限)
            loop
                v := v * i;
                i := i + 1;-- 计数器+1
            end loop;
        dbms_output.put_line(x || '的阶乘为:' || v);
    end if;
end;

综合练习:

分别使用for循环和while循环,计算1 到 10 的累加值

-- for循环
declare
    v number := 0; -- 存放累加值
begin
    for i in 1..10
        loop
            v := v + i;
        end loop;
    dbms_output.put_line('1~10的累加值为:' || v);
end;

-- while循环
declare
    i number := 1;-- 存放初始值
    v number := 0; -- 存放累加值
begin
    while i <= 10
        loop
            v := v + i;
            i := i + 1;
        end loop;
    dbms_output.put_line('1~10的累加值为:' || v);
end;

分别使用for循环和while循环,计算1 到 10 偶数的累加值

-- for循环
declare
    v number := 0; -- 存放累加值
begin
    for i in 1..10
        loop
            if mod(i, 2) = 0 then
                v := v + i;
            end if;
        end loop;
    dbms_output.put_line('1~10的偶数累加值为:' || v);
end;

-- while循环
declare
    i number := 1;-- 存放初始值
    v number := 0; -- 存放累加值
begin
    while i <= 10
        loop
            if mod(i, 2) = 0 then
                v := v + i;
            end if;
            i := i + 1;
        end loop;
    dbms_output.put_line('1~10的偶数累加值为:' || v);
end;

三、loop循环

1.loop循环语法结构

declare
  --声明
begin
  loop
   ------循环体
    if 跳出该循环的条件 then
      exit;
    end if;
  end loop;
end;

-----

declare
  --声明
begin
  loop
   ------循环体
    exit when 跳出该循环的条件;
  end loop;
end;

示例:打印 1 到 100 的数字中偶数

declare
    i number := 2;-- 初始值为2
begin
    loop
        dbms_output.put_line(i);
        i := i + 2;
        if i > 100 then
            exit ;
        end if;
    end loop;
end;


declare
    i number := 2;-- 初始值为2
begin
    loop
        dbms_output.put_line(i);
        i := i + 2;
        exit when i > 100;
    end loop;
end;

练习:计算 1到 10奇数的累加 --loop

declare
    i     number := 1;-- 初始值为1
    v_sum number := 0;-- 存放累加值
begin
    loop
        if mod(i, 2) = 1 then
            v_sum := v_sum + i;
        end if;
        i := i + 1;
        exit when i > 10;
    end loop;
    dbms_output.put_line('1-10奇数的累加值为:' || v_sum);
end;

-- 方法二
declare
    i     number := 1;-- 初始值为1
    v_sum number := 0;-- 存放累加值
begin
    loop
        v_sum := v_sum + i;
        i := i + 2;
        exit when i > 10;
    end loop;
    dbms_output.put_line('1-10奇数的累加值为:' || v_sum);
end;

四、三个循环的区别(重要)

1.for 循环 不需要设置i自增,因为默认就是自增1

  • for i in 10..100 loop
  • 要做的事情
  • end loop;

2.while 循环 需要设置变量自增,且循环条件放在 while 后面

  • while 循环的条件(j <=10) loop
  • 要做的事情
  • 变量的递增(递减)--变量肯定要重新赋值,不然就是死循环
  • end loop;

3.loop 循环 需要设置变量自增,且退出循环的条件放到 if 后

  • loop
  • 想做的事情
  • if 退出循环的场景
then exit;
end if;
end loop;

假设有100块钱,打算买100只鸡,公鸡一只5元,母鸡一只3元,小鸡3只1元,请问100块钱刚好花完,每种鸡至少买1只,每种鸡各可以买多少?

begin
    for g in 1..20
        loop
            for m in 1..33
                loop
                    for x in 1..100
                        loop
                            if g + m + x = 100 and 5 * g + 3 * m + x / 3 = 100 then
                                dbms_output.put_line('公鸡:' || g || ' 母鸡:' || m || ' 小鸡:' || x);
                            end if;
                        end loop;
                end loop;
        end loop;
end;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com