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.mzph.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…