Declare
FirstMonthBgnDate varchar2(10);
LastMonthBgnDate varchar2(10);
TmpMonthBgnDate varchar2(10);
TmpMonthEndDate varchar2(10);
Begin
FirstMonthBgnDate:='2007-01-01';--第一个会计月的开始日期
LastMonthBgnDate:='2007-12-01';--最后一个会计月的开始日期
--Delete From tSysAcctMonth; 按条件删除可能存在的重复数据
TmpMonthBgnDate:=FirstMonthBgnDate; --第一个会计月开始日期就是设置的日期
Loop
--开始日期加1月再减1就是第一个月的结束日期
TmpMonthEndDate:=to_char(add_months(to_date(TmpMonthBgnDate,'yyyy-mm-dd'),1)-1,'yyyy-mm-dd');
dbms_output.put_line(TmpMonthBgnDate||'-'||TmpMonthEndDate||' ');--输出到缓冲区以便核对
/*Insert Into tSysAcctMonth(AcctYear,AcctMonth,BgnDate,EndDate) --要是上面输出的结果检查没问题,就取消这里的注释往正式表插数据
Values(SubStr(TmpMonthBgnDate,1,4),SubStr(TmpMonthBgnDate,6,2),TmpMonthBgnDate,TmpMonthEndDate);*/
TmpMonthBgnDate:=to_char(to_date(TmpMonthEndDate,'yyyy-mm-dd')+1,'yyyy-mm-dd');--上会计月结束日期+1就是下一循环的开始日期
Exit When TmpMonthBgnDate>LastMonthBgnDate;--当开始日期大于最后一个会计月时,退出
End Loop;
commit;
End;
/
FirstMonthBgnDate varchar2(10);
LastMonthBgnDate varchar2(10);
TmpMonthBgnDate varchar2(10);
TmpMonthEndDate varchar2(10);
Begin
FirstMonthBgnDate:='2007-01-01';--第一个会计月的开始日期
LastMonthBgnDate:='2007-12-01';--最后一个会计月的开始日期
--Delete From tSysAcctMonth; 按条件删除可能存在的重复数据
TmpMonthBgnDate:=FirstMonthBgnDate; --第一个会计月开始日期就是设置的日期
Loop
--开始日期加1月再减1就是第一个月的结束日期
TmpMonthEndDate:=to_char(add_months(to_date(TmpMonthBgnDate,'yyyy-mm-dd'),1)-1,'yyyy-mm-dd');
dbms_output.put_line(TmpMonthBgnDate||'-'||TmpMonthEndDate||' ');--输出到缓冲区以便核对
/*Insert Into tSysAcctMonth(AcctYear,AcctMonth,BgnDate,EndDate) --要是上面输出的结果检查没问题,就取消这里的注释往正式表插数据
Values(SubStr(TmpMonthBgnDate,1,4),SubStr(TmpMonthBgnDate,6,2),TmpMonthBgnDate,TmpMonthEndDate);*/
TmpMonthBgnDate:=to_char(to_date(TmpMonthEndDate,'yyyy-mm-dd')+1,'yyyy-mm-dd');--上会计月结束日期+1就是下一循环的开始日期
Exit When TmpMonthBgnDate>LastMonthBgnDate;--当开始日期大于最后一个会计月时,退出
End Loop;
commit;
End;
/