请问在ORACLE的存储过程中的一个一年中天数循环一遍改怎么写呢?
就是从1月1日开始到12月31日循环一遍(假设每月都是31天)

解决方案 »

  1.   

    declare
      testdate date;
    begin
      testdate := to_date('2004-01-01','yyyy-mm-dd')
      while(to_char(testdate ,'yyyy')<'2005')
         loop 
           testdate := testdate + 1;
            .
            .
            .
      end loop;
    end
      

  2.   

    假设每月都是31天
    没必要吧,去实际的就行
    SQL> create or replace procedure p_year(str_year varchar) as
      2  dt date;
      3  begin
      4  dt:=to_date(str_year||'-01-01','yyyy-mm-dd');
      5  loop 
      6   exit when to_char(dt,'yyyy')<>str_year;
      7   dbms_output.put_line(to_char(dt,'yyyy-mm-dd'));
      8   dt:=dt+1;
      9  end loop;
     10  end p_year;
     11  /过程已创建。已用时间:  00: 00: 01.72
    SQL> set serveroutput on 
    SQL> exec p_year('2005');
    2005-01-01
    2005-01-02
    2005-01-03
    2005-01-04
    2005-01-05
    2005-01-06
    2005-01-07
    2005-01-08
    2005-01-09
    2005-01-10
    2005-01-11
    2005-01-12
    2005-01-13