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

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

ID:22747241

大小:236.49 KB

页数:13页

时间:2018-10-31

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

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

1、在使用ORACLE的过程屮,可能需要判断某一天是某个月的第几周,某一天是某一年的第几周。本人使用tl定义函数,调用ORACLE存储过程创建时间维表,解决了该问题。首先,在数据库内创建维度表的表结构。建表语句如下:CREATETABLETIME_DIMDAY-KEYCHAR(8)DAY一DATEDATE,DAY_YEARCHAR(4),DAY_.QUARTERCHAR(l),DAY—MONTHCHAR(2)zWEEK_INMONTHCHAR(l),WEEK;_INYEARCHAR(2)zDAY.■INMONTHCHAR(2)NOTNULL,64K1UNLI

2、MITED0)TABLESPACEUSERSPCTUSED0PCTFREE10INITRANS1MAXTRANS255STORAGE(INITIALMINEXTENTSMAXEXTENTSPCTINCREASEBUFFERPOOLDEFAULTLOGGINGNOCOMPRESSNOCACHENOPARALLELMONITORING;commentontableTIME_DIMis’卩、j•间维表commentoncolumnTIME_DIM.DAY_KEYis’时间,;commentoncolumnTIME_DIM.DAY_DATEis1H1;comme

3、ntoncolumnTIME_DIM.DAY_YEARis1年份,;commentoncolumnTIME_DIM.DAY_QUARTERis*季度1;commentoncolumnTIME_DIM.DAY_MONTHis’月份,;commentoncolumnTIME_DIM.WEEK_INMONTHis’只份的第儿周■;commentoncolumnTIME_DIM.WEEK_INYEARis’年份的第几周*;commentoncolumnTIME_DIM.DAY_INMONTHis1H1;接着,定义函数get_week_month,用于计算某一口期

4、在当月的第几周,定义如下:createorreplacefunctionget_week_month(datelinCHAR)returnintegerisresultinteger;startdaychar(8);xingqichar(9);/*本月第一天是星期几*/week—numnumber;广本月的第一周一共有几天*/day_numnumber;/*datel是这个月的第几天*/day_num2number;beginifsubstr(datel,7,2)=1011thenresult:=1;elsestartday:=substr(datel,

5、1,6)丨I1011;selectto_char(to_date(startdayyyyymmdd•),1day1)intoxingqifromdual;select(casexingqiwhen'星期一1then7when'ffi期二1then6when*星期三*then5when*星期四1then4when1星期五1then3when'星期六1then2when•星期then1end)intoweeknumfromdual;selectto_date(datel,1yyyymmdd1)-to_date(startdayz1yyyymmdd1)+1in

6、today_numfromdual;ifday_num<=week_numthenresult:=1;elseday_num2:=day_num-week_num;selectceil(day_num2/7)+1intoresultfromdual;endif;endif;return(result);end;接着,定义函数get_week_year,用于计算某一日期在当年的第几周,定义如下:createorreplacefunctionget_week_year(datelinCHAR)returnintegerisresultinteger;star

7、tdaychar(8);xingqichar(9);"本年第一天是星期几*/week_numnumber;/*木年的第一周一共有几天*/day_numnumber;/★datel是本年的第几天*/day_num2number;beginifsubstr(datel,5,4)=101011thenresult:=1;elsestartday:=substr(datel,1,4)

8、丨101011;selectto_char(to_date(startday,1yyyymmdd1),May1)intoxingqifromdual;select(casexing

9、qiwhen*星期一1then7when'星期二'then6when▼星期三't

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

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

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