Crontab定时执行Oracle存储过程

栏目: 数据库 · Oracle · 发布时间: 7年前

内容简介:需求描述我们有一个Oracle的存储过程,里面是每个月需要执行一下,生成报表,然后发送给业务部门,这一个功能我们有实现在系统的前台界面(如图1-1),但是客户每次都不点重新生成,导致导出报表时报出异常(如图1-2)。

需求描述

我们有一个Oracle的存储过程,里面是每个月需要执行一下,生成报表,然后发送给业务部门,这一个功能我们有实现在系统的前台界面(如图1-1),但是客户每次都不点重新生成,导致导出报表时报出异常(如图1-2)。

Crontab定时执行Oracle存储过程  

图1-1

Crontab定时执行Oracle存储过程

图1-2

问题分析

既然它是一个存储过程,我们定位到了该请求相对应的存储过程,如下图所示

Crontab定时执行Oracle存储过程

图1-3

我们看它的参数,只有两个,一个是开始时间,表示当月的开始时间,一个时结束时间,表示当月结束时间,我们只要在脚本执行它的时候传一个参数给它就可以。

问题解决

想要解决这个问题,我的想法是这样,把需要处理的所有逻辑写在脚本里,然后设定一个Crontab,通过定时任务去执行。

一,首先看单纯在plsql是如何调用这个存储过程的,我通过定义一个startdate和enddate,然后通过Oracle的时间函数last_day计算出每月的最后一天,开始的第一天我是直接在月份拼接了'01',至于为什么add_months(sysdate,-1)要-1,是因为当月的一般执行上个月的。

declare

startdate varchar2(8);

enddate varchar2(8);

begin

select to_char(add_months(sysdate,-1),'YYYYMM')||'01'

into startdate from dual;

select to_char(last_day(add_months(sysdate,-1)),'YYYYMMDD')

into enddate from dual;

proc_high_settle_rep_month(startdate,enddate);

end;

/

二,把上述的逻辑写入到sh脚本中,我们在相关的路径新建一个文件call_proc_high_settle_rep_month.sh,通过执行sqlplus,然后去执行上述的内容

脚本内容如下:

其中sqlplus中的zh表示数据库账户名,*表示密码,zh10g表示数据库实例名,是你配置在tnsnames.ora的连接名。

. /issdata/application/appiss/.profile

echo "get begging"

date

sqlplus zh/*****@zh10g <<!

declare

startdate varchar2(20);

enddate varchar2(20);

begin

select to_char(add_months(sysdate,-1),'YYYYMM')||'01'

into startdate from dual;

select to_char(last_day(add_months(sysdate,-1)),'YYYYMMDD')

into enddate from dual;

proc_high_settle_rep_month(startdate,enddate);

end;

/

!

echo "get Finished"

三、手工执行了这个脚本,发现没错误,可以执行。

sh call_proc_high_settle_rep_month.sh

我们添加到crontab中,crontab -e进入crontab编辑,注意脚本要写绝对路径

08 23 5 * * sh /tmp/call_proc_high_settle_rep_month.sh

上述的crontab就代表每月的5号的23:08分就会执行这个命令。

上面的08 23 5 * * 依次代表分、时、日、月、周。

至此,整个程序已经实现好所有的逻辑,以后就算以后业务部分不点,也可以导出生成基础数据,报出报表了。

更多Oracle相关信息见 Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

Linux公社的RSS地址: https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-07/153312.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的自我修养

程序员的自我修养

陈逸鹤 / 清华大学出版社 / 2017-5 / 49.00

程序员作为一个职业、也作为一个群体,正逐渐从幕后走向前台,并以他们自己的能力加速改变着世界,也改变着人们生活的方方面面。然而,对于程序员,特别是年轻程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活,这些问题往往比那些摆在面前的技术难题更让他们难以解答。 这本书从一个成熟程序员、一名IT管理者的角度,以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知乃至......一起来看看 《程序员的自我修养》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码