请问一个oracle的存储过程有关问题~

请教一个oracle的存储过程问题~~~~~~我现在有两张表,一张是体温表,一张是员工表,分别如下:体温表: t_ide_o

请教一个oracle的存储过程问题~~~~~~
我现在有两张表,一张是体温表,一张是员工表,分别如下:

体温表:
 t_id  e_obid     t_checkdate        t_temperature
   1       1     2012-3-2 11:11:11         36
   2       1     2012-3-3 12:11:11         37.5
   3       2     2012-3-2 11:11:11         36.5
   4       2     2012-3-3 12:11:11         38

员工表:
 e_id    e_name
   1       小李
   2       小陈

我想在oracle写一个存储过程实现传入年份,得到这一年每个月体温大于37的人次,如果没有的话就显示0,预想的效果是这样:

日期    异常人次
2012-1     0
2012-2     0
2012-3     1
.
.
2012-12    0

先谢谢了!


[解决办法]


create or replace package pkg_test is 
     procedure year_test(results_out out sys_refcursor,v_year in integer); 
end pkg_test; 

create or replace package body pkg_test is 
     procedure year_test(results_out out sys_refcursor, v_year in integer) 
          is 
          begin 
          open results_out for
            with m as ( --这个临时表如果能事先建好,一句sql就可以了
              select to_date(v_year
------解决方案--------------------


'-1-1','yyyy-mm-dd') begin_time,
                     to_date(v_year
[解决办法]
'-2-1','yyyy-mm-dd') end_time from dual
              union all
              select to_date(v_year
[解决办法]
'-2-1','yyyy-mm-dd') begin_time,
                     to_date(v_year
[解决办法]
'-3-1','yyyy-mm-dd') end_time from dual
              --中间各个月份省略
              union all
              select to_date(v_year
[解决办法]
'-12-1','yyyy-mm-dd') begin_time,
                     to_date((v_year+1)
[解决办法]
'-1-1','yyyy-mm-dd') end_time from dual
            )
            select m.begin_time "日期", sum(case when t.t_temperature>37 then 1 else 0 end) "异常人次"
            from m left outer join table t on t.t_checkdate>=m.begin_time and t.t_checkdate<m.end_time
            group by m.begin_time order by m.begin_time;
    end pro_test; 
end pkg_test;


[解决办法]
一个for确定每个月月初月末,
循环里面取到月初月末,通过子查询查出结果


这些东西最好自己尝试去写,这应该是个很简单的东西

存储过程能用的工具太多太多,表、视图、数组。。。