问题:我想让任务在每月10号、15号运行,但如果10号和15号正好是星期六或者是星期天的话,就顺延到下一个星期一再执行,请问应该如何设置? 2016-05-28

我的数据库是Oracle。我想让任务在每月10号、15号运行,但如果10号和15号正好是星期六或者是星期天的话,就顺延到下一个星期一再执行,请问应该如何设置?

 

解答: 2016-05-28

可以使用EasySQLMAIL的执行计划+先决条件来实现该需求。具体的配置方法如下:

1、在任务中配置两个执行计划,起始时间分别是10日和15日,执行间隔为“每1月执行一次”。注意要勾选“当任务运行出错或是先决条件不成立时,重试执行”选项,并且将重试执行的间隔时间选择为“每隔1天重试一次”。”

2、在“任务的SQL命令”中新建一条SQL命令,执行时机为“任务开始前执行”,注意要勾选“作为任务执行的先决条件” 选项。并输入SQL语句:

--取当前的星期,如果是星期六或是星期天,语句返回空结果集(无记录),这时EasySQLMAIL就会停止执行任务
SELECT 1 FROM dual WHERE to_char(SYSDATE,'d') NOT IN ('7','1');

这样配置之后,任务会在每月10日和15日启动,并执行上面配置的SQL语句判断是否是星期六或星期天,如果是星期六或星期天,这时先决条件就不成立,EasySQLMAIL会停止执行此任务,并按照执行计划中的重试策略,1天后重试执行。

 

通过上面的配置,就可以实现您的要求了。

关于执行计划和SQL命令的更多信息,请参阅:

EasySQLMAIL系统操作手册-任务SQL命令配置

EasySQLMAIL系统操作手册-执行计划