oracle这个函数如何loop循环后的求平均值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle这个函数如何loop循环后的求平均值相关的知识,希望对你有一定的参考价值。
函数循环了24次,按每小时一次取值判断,如何把24次判断的结果(100或0),求取平均值,急急急,求协助
语法:
[ <<lable_name>>]
loop
statement...
end loop [lable_name]
注释:lable_name:loop语句的标签,与结构控制语句case类似
loop:循环的开始
statement:循环体,也就是需要重复执行的语句
end loop:循环结束标志
基本loop循环由于没有控制循环结束语句,所以循环体中需要判断是否循环结束来控制循环,要不然会出现死循环的情况
1ORACLE中的结构控制(case语句)
一、使用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;
代码解析:
第2--6行:声明两个加数并赋予初始值
第9--10:循环体,做四则运算,加数nu + 加数str1 的和在赋值给加数nu
第11行:判断str1是否为真,为真则退出,为假则继续循环
第13行:循环结束后打印输出结果
二、使用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;
1ORACLE中的结构控制(IF语句)
代码解析:
第1-6行与上诉一致,声明两个参数然后在赋值初始化
第11-13行:使用IF语句做判断,条件为真这执行退出语句EXIT,条件为假则跳过继续循环
Oracle loop循环无法插入数据
以下的测试基于scott用户下的emp表
首先用while循环进行测试,向emp表插入999条数据
1 declare
2 i emp.empno%type :=1;
3 begin
4 while i<1000
5 loop
6 insert into emp(empno,ename,sal) values(i,concat(\'A\',i),i);
7 i := i+1;
8 end loop;
9 end;
10 /
执行select count(empno) from emp;后确实插入了999条记录
执行truncate table emp;
select * from emp;
现在emp表被清空了,接下来使用loop循环插入数据
PLSQL成功完成,但是却没有数据,目前未解决.
以上是关于oracle这个函数如何loop循环后的求平均值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ORACLE (Varray&loop) 中计算发票的月平均价格