跪求一个oracle时间区间查询的存储过程,具体如下?
oracle库中有一个表,该表包含3个字段频率、时间、值,结果如下
DATETYPE RATEDATE THISVALUE
1 2013-01-12 12:00:00 1100.00
1 2013-01-12 13:00:00 1200.00
1 2013-01-12 14:00:00 1300.00
1 2013-01-12 15:00:00 1400.00
4 2012-05-12 12:00:00 2000.00
4 2012-06-12 12:00:00 2000.00
DATETYPE是频率字段,字段说明如下:1小时、2日、3月、4季度、5年份,现在的要求是传入3个参数,一个是频率,一个是开始时间,一个是结束时间,比如3个参数分别为1,2013-01-12 12:00:00,2013-01-12 16:00:00,频率参数为1,就是要按小时点来查询,表示12点到16点之间有5个时间点,分别是2013-01-12 12:00:00、2013-01-12 13:00:00、2013-01-13 14:00:00、2013-01-12 15:00:00和2013-01-12 16:00:00,需要把这个5个时间点去和数据库的RATEDATE字段做比较,查询出对应的数据来;其他的按日、月、季度和年份查询同理,请大虾们帮忙下一个存储过程!
oracle
存储过程
------解决方案--------------------create or replace procedure sp_query_thisvalue(
query_type in number,
start_time in date,
end_time in date,
cur_result out sys_refcursor
)
is
begin
open cur_result for
select ratedate,
thisvalue
from tb_test
where datetype=query_type
and ratedate>=start_time
and ratedate<=end_time;
end sp_query_thisvalue;
------解决方案--------------------首先根据输入参数拼接相应的SQL语句字符串v_exec_str,然后执行:
OPEN cur_result
FOR v_exec_str;
------解决方案--------------------你的频率问题说明的不是很清楚,如果是天呢,我怎么生成时间天;输入开始时间:2013-01-13 结束时间2013-01-14是不是时间点就是2013-01-13 00:00:00 和2013-01-14 00:00:00?月,季度?时间点是怎么生成说明一下
我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html