plsql循环

本文详细介绍了PL/SQL中的循环结构,包括简单循环、WHILE循环、数字式FOR循环、使用GOTO的标号跳转和如何使用EXIT结束循环。通过示例展示了各种循环的用法,帮助理解PL/SQL中控制流程的关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 简单循环

LOOP
    要执行的语句;
    迭代条件; (可以写在这)
    EXIT WHEN <条件语句>;    /*条件满足,退出循环语句*/
    迭代条件; (也可以写在这)
END LOOP;
例如:

--使用循环语句打印 1-100
declare
    v_i number(5) :=1;
begin
    loop
        dbms_output.put_line(v_i);
        exit when v_i >= 100;
        v_i := v_i + 1;
    end loop;
end;

或者:

--使用循环语句打印 1-100
declare
    v_i number(5) :=1;
begin
    loop
        dbms_output.put_line(v_i);
        v_i := v_i + 1;
        exit when v_i > 100;
    end loop;
end;

2 WHILE 循环

WHILE <布尔表达式> LOOP
    要执行的语句;
END LOOP;
例如:

declare
  v_i number(5) :=1;
begin
  while v_i <= 100
    loop
      dbms_output.put_line(v_i);
      v_i := v_i + 1;
    end loop;
end;
--输出2-100之间的质数
declare
  v_i number(3) :=2;
  v_j number(3) :=2;
  v_flag number(1) :=1;
begin
  while v_i <= 100
  loop
    while v_j <= sqrt(v_i) 
    loop
      if mod(v_i,v_j) = 0
      then v_flag := 0;
      end if;
      v_j := v_j+1;
    end loop;
    
    if v_flag =1
    then dbms_output.put_line(v_i);
    end if;
    
    v_j :=2;
    v_i := v_i+1;
    v_flag := 1;    
  end loop;
end;

3 数字式循环(FOR循环)

FOR 循环计数器 IN 下限 … 上限
LOOP
    要执行的语句;
END LOOP;

说明:每循环一次,循环变量自动加1;使用关键字 REVERSE ,循环变量自动减1。跟在 IN REVERSE 后面的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。可以使用 EXIT 退出循环。

例如:

begin
  for c in 1 .. 100 
    loop
      dbms_output.put_line(c);
    end loop;
end;

4 标号和 GOTO

PL/SQL 中 GOTO 语句是无条件跳转到指定的标号去的意思。语法如下:
GOTO label;
… …
<<label>> /*标号是用<< >>括起来的标识符*/

例如:

--输出2-100之间的质数
declare
  v_flag number(1) := 1;
begin
  for v_i in 2 .. 100 loop
    for v_j in 2 .. sqrt(v_i) loop
      if mod(v_i,v_j)=0 then v_flag :=0;
         goto label;
      end if;
    end loop;
    
    <<label>>
    if v_flag =1 then dbms_output.put_line(v_i);
    end if;
    
    v_flag := 1;
  end loop;
end;

5 使用 EXIT; 结束 FOR 循环

例如:

--打印1——100的自然数,当打印到50时,跳出循环,输出“打印结束”
begin
  for i in 1 .. 100 loop
    if i=50 then dbms_output.put_line('打印结束');
       exit;
    end if;
    
    dbms_output.put_line(i);
    end loop;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值