设为首页 收藏本站
查看: 1259|回复: 0

[经验分享] Oracle SQL Developer定制每天执行一次存储过程的计划任务

[复制链接]

尚未签到

发表于 2017-12-11 16:28:34 | 显示全部楼层 |阅读模式
  有个需求,就是每天从一个表中提取出特定数据,保存到另一个表中。才疏学浅,最初想用Oracle的触发器可以实现,翻开课本之后才发现触发器不是用来干这个的。于是用Java的Quartz框架编写代码实现了这个需求。完成之后又想用数据库实现,翻了下课本,找了些教程,发现网上都是用PL/SQL DEV工具编写脚本实现的。我的电脑上只有Oracle SQL Developer工具,经过一阵折腾,最终也实现了。
  个人感觉用SQL Developer的图形化工具可以很方便的实现创建存储过程,定时作业的任务。相比较于PL/SQL,这个的学习成本更低一些,不需要知道那么多的脚本命令。
  记录下步骤。
  1.获取昨天一天的所有数据
  

select     pk_information,problemno,problemname,productid,partno,createUser,createTime,dutygroup,dutyuser,batch,problemtype,emergencydegree from         brsj_kms_problem  

where       createtime  

between    to_char(sysdate-1,'yyyy-mm-dd')  

and           to_char(sysdate,'yyyy-mm-dd');  

  2.将查询到的数据插入到对应的表中
  

insert into brsj_kms_distributeproblem (  
pk_information
  
,problemno
  
,problemname
  
,productid
  
,partno
  
,createUser
  
,createTime
  
,dutygroup
  
,dutyuser
  
,batch
  
,problemtype
  
,emergencydegree
  
)
  

select pk_information,problemno,problemname,productid,partno,createUser,createTime,dutygroup,dutyuser,batch,problemtype,emergencydegree from  
brsj_kms_problem
where createtime between to_char(sysdate-1,'yyyy-mm-dd') and to_char(sysdate,'yyyy-mm-dd');  

  这里特别说明一下,第一个括号后面没有values关键字,加上values关键字执行就会报错,错误的表达式。
  3.测试上面的SQL语句无误后,开始创建存储过程
  

create procedure ScheduledTasks  

is  
begin
  
insert into brsj_kms_distributeproblem (
  
pk_information
  
,problemno
  
,problemname
  
,productid
  
,partno
  
,createUser
  
,createTime
  
,dutygroup
  
,dutyuser
  
,batch
  
,problemtype
  
,emergencydegree
  
)
  
select pk_information,problemno,problemname,productid,partno,createUser,createTime,dutygroup,dutyuser,batch,problemtype,emergencydegree from
  
brsj_kms_problem where createtime between to_char(sysdate-1,'yyyy-mm-dd') and to_char(sysdate,'yyyy-mm-dd');
  
COMMIT;
  
EXCEPTION
  
WHEN OTHERS THEN
  
DBMS_OUTPUT.PUT_LINE('Exception happened,data was rollback');
  
ROLLBACK;
  
END;
  

  创建好了之后,刷新一下,在左侧的过程文件夹中就可以看到对应的过程名称,检查图标上是否有红叉,如果有,说明语句错误,重新检查哪里出错。如果没有错误,直接右击,选择运行,运行成功后,可以查看对应的表中是否成功插入了数据,需要注意的是要确保执行过程的SQL语句逻辑上是能产生数据的,例如查询昨日的所有记录,如果昨日没有数据产生,即便SQL语句无误也不会产生结果,所以需要提前添加一些测试数据,确保能看到结果。
  运行到这里,能看到新产生的数据,说明创建的过程是没有问题的,接下来就是如何每天让它运行一次的问题了。
  4.定时执行存储过程
  打开项目列表-->调度程序-->作业,右击新建作业。
DSC0000.png

  打开编辑作业窗口后,就可以在这里设定参数了。
  作业名随便起一个,已启用可以先不打勾,创建好后选择启用也可以的。
  说明里可以加汉字做一些介绍。
  作业类用默认的。
  作业类型里面选择存储过程,方案选择默认,打开过程下拉框,就可以看到我们之前创建好的存储过程,把它选上。
  右边何时执行作业就是选择频率了,可以根据自己的需求选择执行一次还是每天执行,重复时间间隔里面可以详细选择每年、每月、每天、每时等详细参数。选好之后会自动生成代码。
  开始时间和结束时间也可以按自己的需求进行选择。
DSC0001.png

  选好之后点击应用,作业就创建好了,如果刚才选择了已启用,这时候作业已经开始运行了。如果刚才没选启用,在创建好的作业上右击,选择启用,也会开始运行。
  设置一个合理的运行频率和运行时间进行测试是否运行正确,无误之后再修改频率和时间为真正运行的频率和时间。至此,所有过程全部完成了。
  网上用的都是PL/SQL里面创建Job,需要写一大堆命令,这个比较简单,图形化工具创建定时任务,不容易出错。个人感觉Oracle的这个SQL Developer工具还是很强大的,功能很丰富,很多东西都可以用图形界面创建出来。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-423030-1-1.html 上篇帖子: springmvc4整合mybatis框架源码 bootstrap html5 mysql oracle maven SSM 下篇帖子: IMP-00017: 由于 ORACLE 错误 6550解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表