【问题标题】:Reshcedule oracle DBMS_SCHEDULER job based on condition根据条件重新调度 oracle DBMS_SCHEDULER 作业
【发布时间】:2015-06-07 11:59:03
【问题描述】:

我有一个每日计划的作业,它运行一个在每天特定时间发送短信的程序。但是不能保证到那时会填充 sms 的源表,如果源表尚未填充,我希望能够将作业重新安排一个小时。 我该怎么办。

【问题讨论】:

    标签: oracle oracle11g dbms-scheduler


    【解决方案1】:

    只需将作业安排为每小时,并在程序中设置一个条件,以便在无事可做时它不会执行任何操作。

    --in pseudo code
    CREATE OR REPLACE
    Your_procedure is
    v_count NUMBER(9);
    BEGIN
    select count(*)
    INTO v_count
    FROM sms_table;
    
    IF v_count > 0 THEN
      --do something
    ELSE
      --log the count into a logging table
    END IF;
    
    END;
    

    Martin Fowler 提出的更复杂的方法this post 发人深省。

    【讨论】:

    • 感谢您的回复...但是这样做意味着如果桌子上有东西,则每小时都会发送一次短信。我想我应该添加一个检查是否之前发送过短信。即如果表格有内容并且没有发送短信,那么什么都不做
    • @Oxax 听起来你已经回答了自己的问题
    猜你喜欢
    • 2021-01-21
    • 2018-02-17
    • 2012-12-10
    • 2014-11-24
    • 2016-10-09
    • 2017-02-22
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多