欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    图解使用ORACLE存储过程创建时间维表.doc

    • 资源ID:267452       资源大小:95KB        全文页数:9页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图解使用ORACLE存储过程创建时间维表.doc

    1、Superromeo原创文档在使用ORACLE的过程中,可能需要判断某一天是某个月的第几周,某一天是某一年的第几周。本人使用自定义函数,调用ORACLE存储过程创建时间维表,解决了该问题。首先,在数据库内创建维度表的表结构。建表语句如下:CREATE TABLE TIME_DIM( DAY_KEY CHAR(8) NOT NULL, DAY_DATE DATE, DAY_YEAR CHAR(4), DAY_QUARTER CHAR(1), DAY_MONTH CHAR(2), WEEK_INMONTH CHAR(1), WEEK_INYEAR CHAR(2), DAY_INMONTH CHAR

    2、(2) )TABLESPACE USERSPCTUSED 0PCTFREE 10INITRANS 1MAXTRANS 255STORAGE ( INITIAL 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 BUFFER_POOL DEFAULT )LOGGING NOCOMPRESS NOCACHENOPARALLELMONITORING;comment on table TIME_DIM is 时间维表;comment on column TIME_DIM.DAY_KEY is 时间;comment on column TIME_DI

    3、M.DAY_DATE is 日期;comment on column TIME_DIM.DAY_YEAR is 年份;comment on column TIME_DIM.DAY_QUARTER is 季度;comment on column TIME_DIM.DAY_MONTH is 月份;comment on column TIME_DIM.WEEK_INMONTH is 月份的第几周;comment on column TIME_DIM.WEEK_INYEAR is 年份的第几周;comment on column TIME_DIM.DAY_INMONTH is 日;接着,定义函数get

    4、_week_month,用于计算某一日期在当月的第几周,定义如下:create or replace function get_week_month(date1 in CHAR) return integer is result integer; startday char(8); xingqi char(9); /* 本月第一天是星期几 */ week_num number; /* 本月的第一周一共有几天 */ day_num number; /* date1是这个月的第几天 */ day_num2 number;begin if substr(date1,7,2)=01 then resu

    5、lt:=1; else startday:=substr(date1,1,6)|01; select to_char(to_date(startday,yyyymmdd),day) into xingqi from dual; select (case xingqi when 星期一 then 7 when 星期二 then 6 when 星期三 then 5 when 星期四 then 4 when 星期五 then 3 when 星期六 then 2 when 星期日 then 1 end ) into week_num from dual; select to_date(date1,yy

    6、yymmdd)-to_date(startday,yyyymmdd)+1 into day_num from dual; if day_num=week_num then result:=1; else day_num2:=day_num-week_num; select ceil(day_num2/7)+1 into result from dual; end if; end if; return(result); end;接着,定义函数get_week_year,用于计算某一日期在当年的第几周,定义如下:create or replace function get_week_year(da

    7、te1 in CHAR) return integer is result integer; startday char(8); xingqi char(9); /* 本年第一天是星期几 */ week_num number; /* 本年的第一周一共有几天 */ day_num number; /* date1是本年的第几天 */ day_num2 number;begin if substr(date1,5,4)=0101 then result:=1; else startday:=substr(date1,1,4)|0101; select to_char(to_date(startda

    8、y,yyyymmdd),day) into xingqi from dual; select (case xingqi when 星期一 then 7 when 星期二 then 6 when 星期三 then 5 when 星期四 then 4 when 星期五 then 3 when 星期六 then 2 when 星期日 then 1 end ) into week_num from dual; select to_date(date1,yyyymmdd)-to_date(startday,yyyymmdd)+1 into day_num from dual; if day_num=0

    9、) loop INSERT INTO TIME_DIM (DAY_KEY, DAY_DATE, DAY_YEAR, DAY_QUARTER, DAY_MONTH, WEEK_INMONTH, WEEK_INYEAR, DAY_INMONTH ) select DATE_CODE as DAY_KEY, to_date(DATE_CODE,yyyymmdd) AS DAY_DATE, substr(DATE_CODE,1,4) AS DAY_YEAR, to_char(to_date(DATE_CODE,yyyymmdd),q) AS DAY_QUARTER, substr(DATE_CODE,

    10、5,2) AS DAY_MONTH, get_week_month(DATE_CODE) AS WEEK_INMONTH, get_week_year(DATE_CODE) AS WEEK_INYEAR, substr(DATE_CODE,7,2) AS DAY_INMONTH from dual; commit; DATE_CODE := TO_CHAR(TO_DATE(DATE_CODE, yyyymmdd) + 1, yyyymmdd); end loop; EXCEPTION WHEN OTHERS THEN ROLLBACK;END;说明:START_DAY为要创建的维表的起始日期,END_DAY为要创建的维表的结束日期。接下来,在TOAD内调用该存储过程,具体如下图:执行存储过程后,得到的维表如下图所示:说明:2012年1月1日是星期日,按照我们中国的计算方式,是2012年的第1周第 9 页 共 9 页


    注意事项

    本文(图解使用ORACLE存储过程创建时间维表.doc)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开