您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Oracle循环语句

2025/12/11 6:26:44发布96次查看
编写循环控制结构时,用户可以使用基本循环,while循环和for循环等三种类型的循环语句,下面分别介绍使用这三种循环语句的方法。 1.基本循环 loop statement1; ...... exit [when condition]; end loop; 当使用基本循环时,无论是否满足条件,语句至少会被执
编写循环控制结构时,用户可以使用基本循环,while循环和for循环等三种类型的循环语句,下面分别介绍使用这三种循环语句的方法。
1.基本循环
loop
         statement1;
         ......
          exit [when condition];
end loop;
当使用基本循环时,无论是否满足条件,语句至少会被执行一次,当condition为true时,会退出循环,并执行end loop后的相应操作。当编写基本循环时一定要包含exit语句,否则会陷入死循环。另外还应该定义循环控制变量,并且在循环体内修改循环控制变量的值。示例:
sql> declare
  2  i int:=1;
  3  begin
  4  loop
  5  insert into testloop values(i);
  6  exit when i=10;
  7  i:=i+1;
  8  end loop;
  9  end;
10  /
2.while循环
基本循环至少要执行一次循环体内的语句,而对于while循环来说,只有条件为true时,才会执行循环体内的语句。while循环以while ...loop开始,以end loop结束。
while condition loop
           statement1;
           statement2;
           .....
end loop;
当condition为true时,执行循环体内的语句,而当condition为false或null时,会退出循环,并执行end loop后的语句。当使用while循环时,应该定义循环控制变量,并在循环体内改变循环控制变量的值。示例:
sql> declare
  2  i int:=1;
  3  begin
  4  while i  5  insert into testloop values(i);
  6  i:=i+1;
  7  end loop;
  8  end;
  9  /
3.for循环
当使用基本循环或while循环时,需要定义循环控制变量,并且循环控制变量不仅可以使用number类型,也可以使用其他数据类型。当使用for循环时,oracle会隐含定义循环控制变量。
for counter in [reverse] lower_bound. .upper_bound loop
         statement1;
         statement2;
         .......
end loop;
counter是循环控制变量,并且该变量由oracle隐含定义,不需要显式定义。lower_bound和upper_bound分别对应于循环控制变量的下界值和上界值,默认情况下,当使用for循环时,每次循环时循环控制变量会自动增1.如果指定reverse选项,那么每次循环时循环控制变量会自动减1。示例:
sql> begin
  2  for i in reverse 1..10 loop
  3  insert into testloop values(i);
  4  end loop;
  5  end;
4.嵌套循环和标号
嵌套循环是指在一个循环语句之中嵌入另一个循环语句,而标号(label)则用于标记嵌套块或嵌套循环,通过在嵌套循环中使用标号,可以区分内层循环和外层循环,并且可以在内层循环中直接退出外层循环,在编写时可以用>定义标号。示例:
sql> declare
  2  result int;
  3  begin
  4  >
  5  for i in 1..100 loop
  6  >
  7  for j in 1..100 loop
  8  result:=i*j;
  9  exit outer when result=1000;
10  exit when result=500;
11  end loop inter;
12  dbms_output.put_line(result);
13  end loop outer;
14  dbms_output.put_line(result);
15  end;
16  /
当执行以上pl/sql块时,如果result=1000,那么直接退出外层循环,而result=500时只会退出内层循环。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product