图解使用oracle存储过程创建时间维表

图解使用oracle存储过程创建时间维表

ID:9854138

大小:95.00 KB

页数:9页

时间:2018-05-12

图解使用oracle存储过程创建时间维表_第1页
图解使用oracle存储过程创建时间维表_第2页
图解使用oracle存储过程创建时间维表_第3页
图解使用oracle存储过程创建时间维表_第4页
图解使用oracle存储过程创建时间维表_第5页
资源描述:

《图解使用oracle存储过程创建时间维表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Superromeo原创文档在使用ORACLE的过程中,可能需要判断某一天是某个月的第几周,某一天是某一年的第几周。本人使用自定义函数,调用ORACLE存储过程创建时间维表,解决了该问题。首先,在数据库内创建维度表的表结构。建表语句如下:CREATETABLETIME_DIM(DAY_KEYCHAR(8)NOTNULL,DAY_DATEDATE,DAY_YEARCHAR(4),DAY_QUARTERCHAR(1),DAY_MONTHCHAR(2),WEEK_INMONTHCHAR(1),WEEK_INYEARCHAR(2),DAY_INMO

2、NTHCHAR(2))TABLESPACEUSERSPCTUSED0PCTFREE10INITRANS1MAXTRANS255STORAGE(INITIAL64KMINEXTENTS1MAXEXTENTSUNLIMITEDPCTINCREASE0第9页共9页Superromeo原创文档BUFFER_POOLDEFAULT)LOGGINGNOCOMPRESSNOCACHENOPARALLELMONITORING;commentontableTIME_DIMis'时间维表';commentoncolumnTIME_DIM.DAY_KEYis'时

3、间';commentoncolumnTIME_DIM.DAY_DATEis'日期';commentoncolumnTIME_DIM.DAY_YEARis'年份';commentoncolumnTIME_DIM.DAY_QUARTERis'季度';commentoncolumnTIME_DIM.DAY_MONTHis'月份';commentoncolumnTIME_DIM.WEEK_INMONTHis'月份的第几周';commentoncolumnTIME_DIM.WEEK_INYEARis'年份的第几周';commentoncolumnTI

4、ME_DIM.DAY_INMONTHis'日';第9页共9页Superromeo原创文档接着,定义函数get_week_month,用于计算某一日期在当月的第几周,定义如下:createorreplacefunctionget_week_month(date1inCHAR)returnintegerisresultinteger;startdaychar(8);xingqichar(9);/*本月第一天是星期几*/week_numnumber;/*本月的第一周一共有几天*/day_numnumber;/*date1是这个月的第几天*/day

5、_num2number;beginifsubstr(date1,7,2)='01'thenresult:=1;elsestartday:=substr(date1,1,6)

6、

7、'01';selectto_char(to_date(startday,'yyyymmdd'),'day')intoxingqifromdual;select(casexingqiwhen'星期一'then7when'星期二'then6when'星期三'then5when'星期四'then4when'星期五'then3when'星期六'then2when'星期日'th

8、en1end)intoweek_num第9页共9页Superromeo原创文档fromdual;selectto_date(date1,'yyyymmdd')-to_date(startday,'yyyymmdd')+1intoday_numfromdual;ifday_num<=week_numthenresult:=1;elseday_num2:=day_num-week_num;selectceil(day_num2/7)+1intoresultfromdual;endif;endif;return(result);end;接着,定义

9、函数get_week_year,用于计算某一日期在当年的第几周,定义如下:createorreplacefunctionget_week_year(date1inCHAR)returnintegerisresultinteger;startdaychar(8);xingqichar(9);/*本年第一天是星期几*/week_numnumber;/*本年的第一周一共有几天*/day_numnumber;/*date1是本年的第几天*/第9页共9页Superromeo原创文档day_num2number;beginifsubstr(date1,

10、5,4)='0101'thenresult:=1;elsestartday:=substr(date1,1,4)

11、

12、'0101';selectto_char(to_date(st

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。