本文共 943 字,大约阅读时间需要 3 分钟。
通过编写存储过程填充日期维表
这种方法可以生成时间段任意长的日期维表数据。
首先创建日期维表:
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; |
转载地址:http://gzrli.baihongyu.com/