Orcle存储过程统计最近30分钟和最近60分钟最大降雨及降雨开始时间和结束时间
来源:互联网 发布:api编程 编辑:程序博客网 时间:2024/05/03 13:44
需求如题。
数据表如下,drp为降雨量,每10分钟一条记录。
存储过程代码如下:
create or replace procedure sp_pro9 is
type sp_pptn_cursor is ref cursor;
type pptn_record_type is record(tm st_pptn_r.tm%type,drp st_pptn_r.drp%type);
type pptn_table_type is table of pptn_record_type index by binary_integer;
rain_cursor sp_pptn_cursor; --定义游标,用于循环取值
rain_record pptn_record_type; --定义结构体,由tm和drp组成
rain_table pptn_table_type; --定义table
v_tm st_pptn_r.tm%type;
v_drp st_pptn_r.drp%type;
n int:=0; --计数器1
i int:=0; --计数器2
max3rain st_pptn_r.drp%type := 0; --30分钟最大值降雨量
sum3rain st_pptn_r.drp%type := 0; --30分钟降雨量和
max6rain st_pptn_r.drp%type := 0; --60分钟最大值降雨量
sum6rain st_pptn_r.drp%type := 0; --60分钟降雨量和
beginDate_3h st_pptn_r.tm%type; --记录30分钟最大降雨时段出现的开始时间
endDate_3h st_pptn_r.tm%type; --记录30分钟最大降雨时段出现的结束时间
beginDate_6h st_pptn_r.tm%type; --记录60分钟最大降雨时段出现的开始时间
endDate_6h st_pptn_r.tm%type; --记录60分钟最大降雨时段出现的结束时间
begin
open rain_cursor for select tm,drp from st_pptn_r; --扩展参数 如时间范围
loop
fetch rain_cursor into rain_table(n);-- 将数据读取到数组中
--判断是否test_cursor是否为空
exit when rain_cursor%notfound;
dbms_output.put_line('时间:'||rain_table(n).tm||' '||'降雨量:'||rain_table(n).drp);
n := n+1;
end loop;
loop
--查找30分钟降雨量
if i>n-3
then exit;
end if;
sum3rain := rain_table(i).drp + rain_table(i+1).drp + rain_table(i+2).drp;
if sum3rain > max3rain then
max3rain := sum3rain;
beginDate_3h := rain_table(i).tm - 10/24/60;
endDate_3h := rain_table(i+2).tm;
end if;
--查找60分钟降雨量
if i>n-6 then
i := i+1;
continue;
end if;
sum6rain := rain_table(i).drp + rain_table(i+1).drp + rain_table(i+2).drp + rain_table(i+3).drp +rain_table(i+4).drp +rain_table(i+5).drp;
if sum6rain > max6rain then
max6rain := sum6rain;
beginDate_6h := rain_table(i).tm - 10/24/60;
endDate_6h := rain_table(i+5).tm;
end if;
i := i+1;
end loop;
dbms_output.put_line('3小时最大值:' || max3rain || '开始时间:' || to_char(beginDate_3h,'YYYY-MM-DD HH24:mi:ss') || '结束时间:' || to_char(endDate_3h,'YYYY-MM-DD HH24:mi:ss'));
dbms_output.put_line('3小时最大值:' || max3rain || '开始时间:' || to_char(beginDate_6h,'YYYY-MM-DD HH24:mi:ss') || '结束时间:' || to_char(endDate_6h,'YYYY-MM-DD HH24:mi:ss'));
end;
- Orcle存储过程统计最近30分钟和最近60分钟最大降雨及降雨开始时间和结束时间
- js 通过传入 开始时间和结束时间 算出相差多少秒 分钟 相差时间
- 根据请假开始时间和结束时间获得天数小时数分钟数
- php获取最近六个月每个月的起始时间和结束时间
- javascript 比较开始时间和结束时间
- JS校验开始时间和结束时间
- JS开始时间和结束时间比较
- 本周的开始时间和结束时间
- layDate开始时间和结束时间
- mysql在一个表中存储创建时间和最近更新时间
- 45分钟会议:节省时间和钱!
- js验证开始时间和结束时间 结束时间不能比开始时间早
- java输出执行开始时间,结束时间和运行时间
- 获取当天的开始和结束时间
- 周的开始和结束时间
- 【日期时间】批处理判断一个文件在最近5分钟内是否被更新过
- mysql, 筛选出最近1分钟之内的语句 时间字段为t_time
- My97DatePicker:开始时间和结束时间的最大间隔为10天,并且不大于当前时间
- 打字可用的文章
- blog开通
- HDU1754_I Hate It
- Mac 添加环境变量的三种方法
- 程序设计教程Android开发; Andengine
- Orcle存储过程统计最近30分钟和最近60分钟最大降雨及降雨开始时间和结束时间
- 枚举
- solr4版本安装,目前4.8.1
- 工厂方法和抽象工厂
- 潮流手机或移动应用2012
- hdu 2023 求平均成绩
- 比较程序对于ERP软件
- php undefined function get_magic_quotes_gpc()
- 步骤,将推送通知使用Unity3d iOS上