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存储过程

解决方案 »

  1.   

    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;
      

  2.   

    首先根据输入参数拼接相应的SQL语句字符串v_exec_str,然后执行:
    OPEN cur_result
    FOR v_exec_str;