--说明:以周日作为每周的开始
declare
v_StartDate date;
v_EndDate date;
v_TmpDate date;
v_year int;
v_weeks int;
begin
--计算第一周的周末
v_StartDate :=to_date('2006-01-01','yyyy-mm-dd');
select trunc(v_StartDate,'D') into v_TmpDate from dual;
v_EndDate :=v_TmpDate +6;
v_weeks :=1;
loop
insert into tb_det_week
(statis_year, start_date, end_date, statis_week)
values
('2006', v_startdate, v_enddate, v_weeks);
if v_EndDate > to_date('2006-12-31','yyyy-mm-dd') then
exit;
end if;
v_weeks :=v_weeks + 1;
v_StartDate := v_EndDate + 1;
v_EndDate := v_EndDate + 7;
end loop;
commit;
end;
declare
v_StartDate date;
v_EndDate date;
v_TmpDate date;
v_year int;
v_weeks int;
begin
--计算第一周的周末
v_StartDate :=to_date('2006-01-01','yyyy-mm-dd');
select trunc(v_StartDate,'D') into v_TmpDate from dual;
v_EndDate :=v_TmpDate +6;
v_weeks :=1;
loop
insert into tb_det_week
(statis_year, start_date, end_date, statis_week)
values
('2006', v_startdate, v_enddate, v_weeks);
if v_EndDate > to_date('2006-12-31','yyyy-mm-dd') then
exit;
end if;
v_weeks :=v_weeks + 1;
v_StartDate := v_EndDate + 1;
v_EndDate := v_EndDate + 7;
end loop;
commit;
end;
解决方案 »
- ——用户A下的数据表,如何全部放到用户B下面去???——
- Centos无图形化界面如何安装oracle10g
- 请教高手 一个 简单的 问题?
- 怎样查看创建的view?
- sql server 和 oracle 数据增量的比较
- exp导出后,执行imp,不断提示“由于对象已存在,下列语句失败”,怎么回事呢?
- 急:两个几百万的表关联查询,如何提高速度?
- 已安装数据库是否就不能developer 2000??
- 急死了
- 在建立OBJECT时会出现pls-00103错误!在线等待!
- plsql里面两个集合的合集、差集、交集怎么写?
- oracle安装到第三张光盘,开始在复制数据库时停电,要怎么把剩下的安装完
declare
v_StartDate date;
v_EndDate date;
v_TmpDate date;
v_year int;
v_weeks int;
begin
execute immediate 'truncate table tb_det_week';
--计算第一周的周末
v_StartDate :=to_date('2006-01-01','yyyy-mm-dd');
select trunc(v_StartDate,'D') into v_TmpDate from dual;
v_EndDate :=v_TmpDate +6;
v_weeks :=1;
loop
insert into tb_det_week
(statis_year, start_date, end_date, statis_week)
values
('2006', v_startdate, v_enddate, v_weeks);
if v_weeks = 52 then
dbms_output.put_line('v_tempdate' || to_char(v_tmpdate,'yyyy-mm-dd'));
end if;
if v_tmpDate > to_date('2006-12-31','yyyy-mm-dd') then
exit;
end if;
v_weeks :=v_weeks + 1;
v_StartDate := v_EndDate + 1;
v_tmpDate := v_EndDate + 7;
if v_tmpDate <= to_date('2006-12-31','yyyy-mm-dd') then
v_endDate :=v_tmpDate;
else
v_endDate := to_date('2006-12-31','yyyy-mm-dd');
end if;
if v_weeks = 53 then
dbms_output.put_line('v_enddate' || to_char(v_endDate,'yyyy-mm-dd'));
end if;
end loop;
commit;
end;