日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle存储过程季度方法,Oracle存储过程、触发器实现获取时间段内周、月、季度的具体时间...

發(fā)布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle存储过程季度方法,Oracle存储过程、触发器实现获取时间段内周、月、季度的具体时间... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎技術(shù)交流。 QQ:138986722

創(chuàng)建table:

create table tbmeetmgrinfo(

id number primary key, /*主鍵,自動增加 */

huiyishi number, /*會議室編號 */

STARTTIME varchar2(30), /*會議開始時間 */

ENDTIME varchar2(30), /*會議結(jié)束時間 */

CREATETIME varchar2(30), /*會議創(chuàng)建日期 */

STOPTIME varchar2(30), /*會議起止日期*/

xunhuaimoshi number /*會議循環(huán)模式1為單周、3為每月、4為每季度 、0為一次性會議*/

);

--創(chuàng)建自動增長序列

create sequence tbmeetmgrinfo_tb_sequence

minvalue 1 --最小值

maxvalue 9999999999999999999999999 --最大值

increment by 1 --增加量為1

start with 1 /* 從1開始 */

insert into tbmeetmgrinfo values(tbmeetmgrinfo_tb_sequence.nextval,2,'12:00','13:00','2011-05-10','2011-05-11',1)

select * from tbmeetmgrinfo

創(chuàng)建觸發(fā)器:

create or replace trigger biufer_tbmeetmgr_CHANGETIME

before insert or update or delete

of CHANGETIME

on tbmeetmgr

for each row

begin

-- 調(diào)用存儲過程

hzwmeetmgr;

end;

存儲過程:

CREATE OR REPLACE PROCEDURE hzwmeetMgr is

meetId number; --會議室編號

strSta varchar2(30); --會議開始時間

strEnd varchar2(30); --會議結(jié)束時間

strCreate varchar2(30); --會議創(chuàng)建日期

strOver varchar2(30); --會議終止日期(循環(huán)終止時期)

strOverSql varchar2(30); --存入臨時表中的終止日期

varInt number; --會議創(chuàng)建日期到終止日期相差天數(shù)

varSubTime varchar2(30); --循環(huán)日期

varMonths number;

TYPE c_time IS REF CURSOR; --創(chuàng)建游離標(biāo)記

vrec c_time;

yearY varchar2(10); --日期年部分

monthsM varchar2(10);--日期月部分(終止入庫時間)

begin

delete tbmeetmgrinfo where 1=1 ; --先清空表中數(shù)據(jù)

commit;

varInt := 0;

--一次性會議記錄

for varCode in (select id ,huiyishi,STARTTIME,ENDTIME,CREATETIME,STOPTIME,xunhuairiqi from tbmeetmgr

where HUIYIMOSHI = 1 and to_date(stoptime,'yyyy-MM-dd') >=

to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'))

loop

strOver := varCode.Stoptime;

strCreate := substr(varCode.Createtime,1,10);

meetId := varCode.Huiyishi;

strSta := varCode.Starttime;

strEnd := varCode.Endtime;

varSubTime := substr(varCode.Xunhuairiqi,3);

--最后的0代表的是一次性會議、循環(huán)模式1為單周、3為每月、4為每季度

insert into tbmeetmgrinfo values(tbmeetmgrinfo_tb_sequence.nextval,meetId,strSta,strEnd,strCreate,strOver,0);

commit;

end loop;

--單周循環(huán)

for varCode in (select id ,huiyishi,STARTTIME,ENDTIME,CREATETIME,STOPTIME,xunhuairiqi,(( to_date(stoptime,'yyyy-mm-dd') - next_day

(to_date(substr(createtime, 0, 10),'yyyy-mm-dd')-1,3))/7) resultNum from tbmeetmgr

where xunhuaimoshi = 1 and to_date(stoptime,'yyyy-MM-dd') >=

to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'))

loop

varInt := ceil(varCode.Resultnum);

strOver := varCode.Stoptime;

strCreate := substr(varCode.Createtime,1,10);

meetId := varCode.Huiyishi;

strSta := varCode.Starttime;

strEnd := varCode.Endtime;

varSubTime := substr(varCode.Xunhuairiqi,3);

OPEN vrec for SELECT to_char(next_day(to_date(strCreate,'yyyy-mm-dd')-1,ceil(varSubTime)+1)+(rownum-1)*7 , 'yyyy-MM-dd')

from dual connect by rownum<=varInt ;

LOOP

FETCH vrec INTO strOverSql; --入庫終止日期

exit when vrec%notfound;

--dbms_output.put_line('----+++++單周循環(huán)日期++++++-----:'||strOverSql);

insert into tbmeetmgrinfo values(tbmeetmgrinfo_tb_sequence.nextval,meetId,strSta,strEnd,strCreate,strOverSql,1);

commit;

end loop;

end loop;

--每月循環(huán)

for varCodeMonths in(select id ,huiyishi,STARTTIME,ENDTIME,CREATETIME,STOPTIME,

Xunhuairiqi,ceil(months_between(to_date(stoptime,'yyyy-mm-dd'),

to_date(substr(createtime, 0, 10),'yyyy-mm-dd'))) months from tbmeetmgr

where xunhuaimoshi = 3 and to_date(stoptime,'yyyy-MM-dd') >=

to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'))

loop

strOver := varCodeMonths.Stoptime;

strCreate := substr(varCodeMonths.Createtime,1,10);

meetId := varCodeMonths.Huiyishi;

strSta := varCodeMonths.Starttime;

strEnd := varCodeMonths.Endtime;

varMonths := varCodeMonths.Months;

varSubTime := substr(varCodeMonths.Xunhuairiqi,3,4); --取得開會時間(具體哪一日)

yearY := substr(strCreate,1,8);

monthsM := yearY||varSubTime ;

OPEN vrec for SELECT to_char(add_months(to_date(monthsM,'yyyy-MM-dd'),+(rownum-1)), 'yyyy-mm-dd')

from dual connect by rownum<= ceil(varMonths) ;

LOOP

FETCH vrec INTO strOverSql; --入庫終止日期

exit when vrec%notfound;

--dbms_output.put_line('月度時間:'||strOverSql);

insert into tbmeetmgrinfo values(tbmeetmgrinfo_tb_sequence.nextval,meetId,strSta,strEnd,strCreate,strOverSql,3);

commit;

end loop;

end loop;

--每季度循環(huán)

for varCodeMonths in(select id ,huiyishi,STARTTIME,ENDTIME,CREATETIME,STOPTIME,

Xunhuairiqi,ceil((to_date(stoptime,'yyyy-mm-dd')-to_date(substr(createtime, 0, 10),'yyyy-mm-dd'))/90) months

from tbmeetmgr where xunhuaimoshi = 4 and to_date(stoptime,'yyyy-MM-dd') >=

to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'))

loop

strOver := varCodeMonths.Stoptime;

strCreate := substr(varCodeMonths.Createtime,1,10);

meetId := varCodeMonths.Huiyishi;

strSta := varCodeMonths.Starttime;

strEnd := varCodeMonths.Endtime;

varMonths := varCodeMonths.Months;

varSubTime := substr(varCodeMonths.Xunhuairiqi,3,7); --取得開會時間(具體哪一日)

yearY := substr(strCreate,1,5);

monthsM := yearY||varSubTime ;

OPEN vrec for SELECT to_char(add_months(to_date(monthsM,'yyyy-MM-dd'),+(rownum-1)*3), 'yyyy-mm-dd')

from dual connect by rownum<= ceil(varMonths) ;

LOOP

FETCH vrec INTO strOverSql; --入庫終止日期

exit when vrec%notfound;

--dbms_output.put_line('季度循環(huán)日期:'||strOverSql);

insert into tbmeetmgrinfo values(tbmeetmgrinfo_tb_sequence.nextval,meetId,strSta,strEnd,strCreate,strOverSql,4);

commit;

end loop;

end loop;

end;

總結(jié)

以上是生活随笔為你收集整理的oracle存储过程季度方法,Oracle存储过程、触发器实现获取时间段内周、月、季度的具体时间...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。