Oracle中PLSQL的循环语句
在PL/SQL中可以使⽤LOOP语句对数据进⾏循环处理,利⽤该语句可以循环执⾏指定的语句序列。常⽤的LOOP循环语句包含3种形式:基本的LOOP、LOOP和LOOP。
LOOP语句的基本语法结构如下:
[<<label_name>>]
LOOP
<plsql developer怎么执行语句
END LOOP [label_name]
【语法说明】
<<label_name>>:LOOP结构的标签,是可选项。
LOOP:LOOP循环开始标志。
statement:LOOP语句中循环执⾏的语句序列。
END LOOP:LOOP循环结束标志,可以添加LOOP结构的标签。
1.基本的LOOP语句
实例:要求声明变量,每次循环都需要为变量增加数字1,并输出结果。当变量值⼤于3时,退出循环操作。
a、利⽤WHEN结束循环操作。
SQL> set serveroutput on;
SQL> --exit when
SQL> declare
2    v_rlt number(8):=-3;
3  begin
4    <<fst_loop>>
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    <<fst_loop>>
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、LOOP结构
该语句结构的相关语法如下:
[<<label_name>>]
WHILE boolean_expression
LOOP
<
END LOOP [label_name];
【语法说明】
boolean_expression:布尔表达式。
statement:语句序列,当boolean_expression为TRUE时,该语句序列可获得执⾏权。
c、LOOP结构
SQL> --loop
SQL> declare
2    v_rlt number(8):=-3;
3  begin
4    <<while_loop>>
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
LOOP结构
[<<label_name>>]
FOR index_name IN
[ REVERSE ]
lower_bound .. upper_bound
LOOP
<
END LOOP [label_name];
【语法说明】
index_name:循环计数器,是⼀个变量,它可以得到当前的循环指数。需要注意的是,不能为其⼿⼯赋值。
REVERSE:可选项,指定循环⽅式。默认的循环⽅式由下标(lower_bound)到上标(upper_bound)。使⽤该选项则从上标界到下标界。
lower_bound:循环范围的下标界。
upper_bound:循环范围的上标界。
下标和上标之间的".."不能省略。
d、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 PL/SQL的三种形式的循环:
1.LOOP(⽆条件循环):
loop
statements;
end loop;
2.WHILE(有条件循环):
while condition loop
statements;
end loop;
3.FOR(固定次数循环):
for counter in value1 .. value2
loop
statements;
end loop;
实例:分别⽤三种循环输出1-100 loop:
1. declare i number;
2. begin
3. i := 1;
4. loop
5.  if i > 100 then
6.      goto quit;
7.  end if;
8.  dbms_output.put_line(i);
9.  i := i + 1;
10. end loop;
11. <<quit>>
12. null;
13. end;
while:
1. declare
2.  i number;
3. begin
4. i := 1;
5. while i<=100 loop
6.      dbms_output.put_line(i);
7.      i := i+1;
8. end loop;
9. end;
for:
1. declare
2.  i number;
3. begin
4. for i in 1..100
5. loop
6.    dbms_output.put_line(i);
7. end loop;
8. end;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。