oracle for循环计数器,Oracle PL/SQL loop循环详解

在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列。常用的LOOP循环语句包含3种形式:基本的LOOP、WHILE...LOOP和FOR...LOOP。

LOOP语句的基本语法结构如下:

[<>]

LOOP

statement...

END LOOP [label_name]

【语法说明】

<>:LOOP结构的标签,是可选项。

LOOP:LOOP循环开始标志。

statement:LOOP语句中循环执行的语句序列。

END LOOP:LOOP循环结束标志,可以添加LOOP结构的标签。

1.基本的LOOP语句

实例:要求声明变量,每次循环都需要为变量增加数字1,并输出结果。当变量值大于3时,退出循环操作。

a、利用EXIT...WHEN结束循环操作。

SQL> set serveroutput on;

SQL> --exit when

SQL> declare

2    v_rlt number(8):=-3;

3  begin

4    <>

5    loop

6      dbms_output.put_line('v_rlt = '||v_rlt);

7      v_rlt:=v_rlt+1;

8      exit fst_loop when v_rlt > 3;

9    end loop;

10      dbms_output.put_line('LOOP循环已经结束!');

11  end;

12  /

v_rlt = -3

v_rlt = -2

v_rlt = -1

v_rlt = 0

v_rlt = 1

v_rlt = 2

v_rlt = 3

LOOP循环已经结束!

PL/SQL procedure successfully completed

b、利用IF...EXIT语句结束循环

SQL> --if exit

SQL> declare

2    v_rlt number(8):=-3;

3  begin

4    <>

5    loop

6      dbms_output.put_line('v_rlt = '||v_rlt);

7      v_rlt:=v_rlt+1;

8      if v_rlt > 3 then

9        dbms_output.put_line('变量的值已经大于3,当前值为'||v_rlt);

10        exit fst_loop;

11      end if;

12    end loop fst_loop;

13      dbms_output.put_line('LOOP循环已经结束!');

14  end;

15  /

v_rlt = -3

v_rlt = -2

v_rlt = -1

v_rlt = 0

v_rlt = 1

v_rlt = 2

v_rlt = 3

变量的值已经大于3,当前值为4

LOOP循环已经结束!

PL/SQL procedure successfully completed

2、WHILE...LOOP结构

WHILE...LOOP结构和基本的LOOP语句不同,它本身可以结束LOOP循环。WHILE关键词后面需要有布尔表达式,当WHILE后面的布尔表达式为TRUE时,则循环体重的语句序列被执行1次,然后会重新判断WHILE后面的表达式是否为TRUE,只有当WHILE后的布尔表达式为FALSE时,才结束整个LOOP循环。

该语句结构的相关语法如下:

[<>]WHILE boolean_expression

LOOP

statement...

END LOOP [label_name];

【语法说明】

boolean_expression:布尔表达式。

statement:语句序列,当boolean_expression为TRUE时,该语句序列可获得执行权。

c、WHILE...LOOP结构

SQL> --while...loop

SQL> declare

2    v_rlt number(8):=-3;

3  begin

4    <>

5    while(v_rlt < 4)

6    loop

7      dbms_output.put_line('v_rlt = '||v_rlt);

8      v_rlt:=v_rlt+1;

9    end loop while_loop;

10      dbms_output.put_line('WHILE循环已经结束!');

11  end;

12

13  /

v_rlt = -3

v_rlt = -2

v_rlt = -1

v_rlt = 0

v_rlt = 1

v_rlt = 2

v_rlt = 3

WHILE循环已经结束!

PL/SQL procedure successfully completed

3.FOR...LOOP结构

FOR...LOOP语句可以遍历某个范围的整数,该范围被FOR和LOOP关键词封闭。首次进入循环时,循环范围将被确定,并且以后不会再次计算。每循环一次,循环指数将会自动增加1。

FOR...LOOP语句的语法结构如下:

[<>]FOR index_name IN[ REVERSE ]

lower_bound .. upper_bound

LOOP

statement...

END LOOP [label_name];

【语法说明】

index_name:循环计数器,是一个变量,它可以得到当前的循环指数。需要注意的是,不能为其手工赋值。

REVERSE:可选项,指定循环方式。默认的循环方式由下标(lower_bound)到上标(upper_bound)。使用该选项则从上标界到下标界。

lower_bound:循环范围的下标界。

upper_bound:循环范围的上标界。

下标和上标之间的".."不能省略。

d、FOR...LOOP结构

SQL> --for..loop

SQL> begin

2    for v_rlt in -3..3 loop

3      dbms_output.put_line('v_rlt = '||v_rlt);

4    end loop;

5      dbms_output.put_line('FOR循环已经结束!');

6  end;

7  /

v_rlt = -3

v_rlt = -2

v_rlt = -1

v_rlt = 0

v_rlt = 1

v_rlt = 2

v_rlt = 3

FOR循环已经结束!

PL/SQL procedure successfully completed

0b1331709591d260c1c78e86d0c51c18.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值