2015-04-02 73 views
2

我有一個每日計劃作業,該作業運行的程序每天在特定時間發送短信。但是並不能保證短信的源表將被填充到那個時候,如果源表尚未填充,我希望能夠重新安排另一個小時的工作時間。 我該如何解決這個問題。根據條件reshcedule oracle 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; 

對於更復雜的方法this post來自馬丁福勒是令人髮指。

+0

感謝您的答覆......但這樣做意味着如果表中有東西,短信將每小時發送一次。我想我應該添加一個檢查,如果它的短信已經發送過。即如果表有內容和短信尚未發送,否則什麼也不做 – Oxax 2015-04-24 10:20:55

+0

@Oxax聽起來像你已經回答了你自己的問題 – kevinsky 2015-04-24 11:01:20