oracle存儲過程季度方法,Oracle存儲過程、觸發器實現獲取時間段內周、月、季度的具體時間...

歡迎技術交流。 QQ:138986722

創建table:

create table tbmeetmgrinfo(

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

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

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

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

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

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

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

);

--創建自動增長序列

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

創建觸發器:

create or replace trigger biufer_tbmeetmgr_CHANGETIME

before insert or update or delete

of CHANGETIME

on tbmeetmgr

for each row

begin

-- 調用存儲過程

hzwmeetmgr;

end;

存儲過程:

CREATE OR REPLACE PROCEDURE hzwmeetMgr is

meetId number; --會議室編號

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

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

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

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

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

varInt number; --會議創建日期到終止日期相差天數

varSubTime varchar2(30); --循環日期

varMonths number;

TYPE c_time IS REF CURSOR; --創建游離標記

vrec c_time;

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

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

begin

delete tbmeetmgrinfo where 1=1 ; --先清空表中數據

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代表的是一次性會議、循環模式1為單周、3為每月、4為每季度

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

commit;

end loop;

--單周循環

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('----+++++單周循環日期++++++-----:'||strOverSql);

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

commit;

end loop;

end loop;

--每月循環

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;

--每季度循環

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('季度循環日期:'||strOverSql);

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

commit;

end loop;

end loop;

end;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何root安卓手機_安卓Root+卡開機畫面救磚教程丨以一加手機為例

一加手機買到手已經用了1個多月了&#xff0c;還有很多朋友在問我怎么Root、怎么替換Recovery、怎么安裝Magisk、有時候刷Magisk模塊變磚怎么解救。小編統一整理一下&#xff0c;其他安卓手機也可以參考&#xff0c;很多思路都是通用的。一加手機刷入TWRP并RootTWRP大概是現在安…

Linux用ctrl + r 查找以前(歷史)輸入的命令

在Linux系統下一直用上下鍵查找以前輸入的命令&#xff0c;這個找剛輸入不久的命令還是很方便的&#xff0c;但是比較久遠的命令&#xff0c;用上下鍵效率就不高了。那個history命令也是個花架子&#xff0c;雖然功能多&#xff0c;但不好用&#xff0c;網上找了下&#xff0c;…

敬畏生產環境

生產環境即是運行用戶正在使用的系統環境。有時&#xff0c;一些粗心的用戶會把他們的生產環境交給我們&#xff0c;希望我們來進行變更操作&#xff0c;如部署Agent等。但我們實際上并不清楚這些生產環境有多重要&#xff0c;有時也不清楚我們的變更操作有多危險&#xff0c;其…

unity消息隊列判斷字符串相等有錯誤_Python3十大經典錯誤及解決辦法

◆ ◆ ◆ ◆ ◆接觸了很多Python愛好者&#xff0c;有初學者&#xff0c;亦有轉行人。不論大家學習Python的目的是什么&#xff0c;總之&#xff0c;學習Python前期寫出來的代碼不報錯就是極好的。下面&#xff0c;嚴小樣兒為大家羅列出Python3十大經典錯誤及解決辦法&#xf…

php qmqp 沒有方法,CentOS7 php 安裝 amqp擴展

繼續安裝完 rabbitmq后&#xff0c;安裝phpqmqp擴展1.安裝rabbitmq-c安裝最新版wget -c https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gztar zxf rabbitmq-c-0.8.0.tar.gzcd rabbitmq-c-0.8.0./configure --prefix/usr/local/rabbitmq…

如何提高UDP的可靠性

TCP是通過確認機制和超時重傳機制實現可靠傳輸 UDP UDP它不屬于連接型協議&#xff0c;因而具有資源消耗小&#xff0c;處理速度快的優點&#xff0c;所以通常音頻、視頻和普通數據在傳送時使用UDP較多&#xff0c;因為它們即使偶爾丟失一兩個數據包&#xff0c;也不會對接收結…

CentOS 7鏡像下載

方式一 官網下載 官網鏈接&#xff1a;http://isoredirect.centos.org/centos/7/isos/x86_64/ Actual Country 國內資源 Nearby Countries 周邊國家資源 方式二 阿里云下載 阿里云站點&#xff1a;http://mirrors.aliyun.com/centos/7/isos/x86_64/ 各個版本的ISO鏡像文件…

Docker Dirty Cow逃逸

2019獨角獸企業重金招聘Python工程師標準>>> 在Linux中&#xff0c;有一個功能&#xff1a;VDSO(virtual dvnamic shared object),這是一個小型共享庫&#xff0c;能將內核自動映射到所有用戶程序的地址空間。 Docker逃逸利用Dirty Cow漏洞&#xff0c;將Payload寫到…

九月騰訊,創新工場,淘寶等公司最新面試三十題(更新至10.04)

九月騰訊&#xff0c;創新工場&#xff0c;淘寶等公司最新面試三十題 引言 曾記否&#xff0c;去年的10月份也同此刻一樣&#xff0c;是找工作的高峰期&#xff0c;本博客便是最初由整理微軟等公司面試題而發展而來的。如今&#xff0c;又即將邁入求職高峰期--10月份&#…

oracle 存long,ORACLE中LONG類型字段的存取

&#xfeff;&#xfeff;Oracle中存取4000字節以上大文本類型可以用此數據類型&#xff0c;其在C#中的讀寫方法如下&#xff1a;注意需要引用 System.Data.OracleClient然后添加命名空間&#xff1a;using System.Data.OracleClientORALCE建庫腳本&#xff1a;CREATE TABLE TE…

創建office一直轉圈_Windows寫字板出現廣告條幅:推薦用戶使用在線版Office

自Windows 95開始&#xff0c;寫字板(Wordpad)應用就一直預裝在Windows操作系統中。它是一款非常簡單的文本編輯器&#xff0c;在功能方面介于記事本和Word之間。近日Rafael Rivera發現微軟正在為這款古老的寫字板添加新功能--在應用中添加廣告橫幅。這個廣告橫幅就是推薦那些寫…

2017軟件工程實踐第二次作業

1、 項目地址&#xff1a;https://github.com/one-piece-zero/sudoku 2、PSP表格記錄的估計耗時 3、解題思路&#xff1a; 在拿到這個題目的時候&#xff0c;我最早想到的是大一下學期做的程序語言綜合設計實踐中的N皇后問題&#xff0c;這兩個題目之間有許多的類似之處&#x…

CentOS7 安裝或遷移 wordpress(完整遷移)

一、安裝Apache web服務器 安裝Apache web服務器&#xff1a; yum install -y httpd # 使用yum安裝 systemctl start httpd # 啟動Apache服務器 systemctl enable httpd # Apache服務器開機后自動啟動 使用瀏覽器打開http://127.0.0.1檢查Apache安裝是否成功。成功后…

WinForm部署問題

WinForm部署問題 1、解決&#xff1a;This implementation is not part of the Windows Platform 問題&#xff1f; 一&#xff1a;單擊 開始 &#xff0c;單擊 運行 &#xff0c;鍵入 gpedit.msc &#xff0c;然后單擊 確定 。    二&#xff1a;依次展開 計算機配置 &…

oracle 未找到段的存儲定義,Exp-00003 no storage definition found issue in oracle 11g (未找到段 (0,0) 的存儲定義)...

連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Tes已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集服務…

signal軟件如何退出賬號_超好用的手機視頻剪輯軟件Videoleap內購分享

注意事項【必讀】&#xff1a;1.必須按照下面的教程操作&#xff0c;教程講的很詳細。2.如果遇到帳號密碼錯誤&#xff0c;先看本頁面新密碼再登陸&#xff0c;別亂試密碼。3.如果手機上有你購買的這個軟件&#xff0c;請先卸載&#xff0c;再用我們的蘋果id登陸下載&#xff0…

MySQL 常用內置函數

MySQL官方文檔&#xff1a;https://dev.mysql.com/doc/refman/5.6/en/func-op-summary-ref.html MySQL數據庫提供了很多函數包括 一、數學函數 二、字符串函數 三、日期時間函數 四、聚合函數(常用于GROUP BY從句的SELECT查詢中) 五、條件判斷函數 六、系統信息函數 七、…

python之eval函數,map函數,zip函數

eval(str)函數很強大&#xff0c;官方解釋為&#xff1a;將字符串str當成有效的表達式來求值并返回計算結果。所以&#xff0c;結合math當成一個計算器很好用。 eval()函數常見作用有&#xff1a; 1、計算字符串中有效的表達式&#xff0c;并返回結果 >>> eval(pow(2,…

第一個servlet小程序

第一個servlet小程序 com.fry.servlet.HelloServlet 1 package com.fry.servlet;2 3 import javax.servlet.ServletException;4 import javax.servlet.http.HttpServlet;5 import javax.servlet.http.HttpServletRequest;6 import javax.servlet.http.HttpServletResponse;7 im…

騰訊校園招聘面試的秘密

轉自公司同事戴釗的文章 由于從事基層管理崗位的原因&#xff0c;最近兩年有機會在武漢、南京、上海等地進行校園招聘&#xff0c;為公司選拔優秀人才&#xff0c;在這個過程中接觸過一百多名各種類型的應聘畢業生&#xff0c;我深深為這些莘莘學子渴望進入騰訊的熱情所感動&am…