通过编写存储过程填充日期维表
这种方法可以生成时间段任意长的日期维表数据。
首先创建日期维表:
create
table
DIM_DATE_T
(
F_DATE
DATE
,
F_YEAR VARCHAR2(10),
F_MONTH VARCHAR2(10),
F_DAY VARCHAR2(10),
F_WEEK VARCHAR2(20)
)
|
其次创建用于生成数据的存储过程:
create
or
replace
procedure
fill_dim_date_t_p(start_date
in
char
, end_date
in
char
)
as
v_counter number := 0;
v_max number := 0;
begin
execute
immediate
'truncate table dim_date_t'
;
v_max := to_number(TO_DATE(end_date,
'yyyy-mm-dd'
)-TO_DATE(start_date,
'yyyy-mm-dd'
));
loop
insert
into
dim_date_t (F_DATES,F_YEAR,F_MONTH,F_DAY,F_WEEK)
values
(
TO_DATE(start_date,
'yyyy-mm-dd'
)+v_counter,
to_char(TO_DATE(start_date,
'yyyy-mm-dd'
) + v_counter,
'yyyy'
),
to_char(TO_DATE(start_date,
'yyyy-mm-dd'
) + v_counter,
'mm'
),
to_char(TO_DATE(start_date,
'yyyy-mm-dd'
) + v_counter,
'dd'
),
to_char(TO_DATE(start_date,
'yyyy-mm-dd'
) + v_counter,
'day'
)
);
exit
when
v_counter >= v_max;
v_counter := v_counter+1;
end
loop;
commit
;
end
fill_dim_date_t_p;
|