8人参与 • 2025-06-09 • Oracle
oracle中的循环常用的有:for循环、while循环和loop循环
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
declare begin while 进入循环的条件 loop --循环体 end loop; end;
示例:循环打印1~10 以及 输出格式:
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;
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
2.while 循环 需要设置变量自增,且循环条件放在 while 后面
3.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;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论