ORACLED中的循环控制语句(LOOP)
1、语法:
[ <<lable_name>>]
loop
statement...
end loop [lable_name]

2、注释:lable_name:loop语句的标签,与结构控制语句case类似
loop:循环的开始
statement:循环体,也就是需要重复执行的语句
end loop:循环结束标志
基本loop循环由于没有控制循环结束语句,所以循环体中需要判断是否循环结束来控制循环,要不然会出现死循环的情况

3、一、使用EXIT...WHEN来判断是否循环结束
例:求1+2+..+100的和
DECLARE
str1 number;
nu number;
BEGIN
str1 := 1 ;
nu := 0 ;
<<loop_text>>
LOOP
nu := nu + str1;
str1 := str1+1;
EXIT loop_text WHEN str1>100 ;
END LOOP;
DBMS_OUTPUT.PUT_LINE('循环结束。1+2+。。。+100的结果为:'||nu);
END;

4、代码解析:
第2--6行:声明两个加数并赋予初始值
第9--10:循环体,做四则运算,加数nu + 加数str1 的和在赋值给加数nu
第11行:判断str1是否为真,为真则退出,为假则继续循环
第13行:循环结束后打印输出结果

5、二、使用IF语句来判断是否循环结束
例:求1+2+..+100的和
DECLARE
str1 number;
nu number;
BEGIN
str1 := 1 ;
nu := 0 ;
<<loop_text>>
LOOP
nu := nu + str1;
str1 := str1+1;
IF str1>100 THEN
DBMS_OUTPUT.PUT_LINE('循环结束');
EXIT loop_text;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('1+2+。。。+100的结果为:'||nu);
END;

6、代码解析:
第1-6行与上诉一致,声明两个参数然后在赋值初始化
第11-13行:使用IF语句做判断,条件为真这执行退出语句EXIT,条件为假则跳过继续循环

1、WHILE..LOOP循环语句自身可以控制结束循环,就不需要在循环体中通过判断来结束循环,基本语法为:
[ <<lable_name>> ]
WHILE boolean_expression
loop
statement....
end loop [lable_name] ;
注释:boolean_expression为一个布尔类型的值,当boolean_expression为真时执行loop语句,当boolean_expression为假时,则跳过当前的loop循环

2、例:求1+2+..+100的和
DECLARE
str1 number;
nu number;
BEGIN
str1 := 1 ;
nu := 0 ;
<<loop_text>>
WHILE str1<=100
LOOP
nu := nu + str1;
str1 := str1+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('结束循环,1+2+。。。+100的结果为:'||nu);
END;

3、注释:
第1-6行与上诉一致,声明两个参数然后在赋值初始化
第8行:判断str1<=100是否为真,当str1为1.。100时,都小于等于100,所以为真则执行loop循环
第9-12行:循环体
