日期:2014-05-17  浏览次数:20974 次

跪求一个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