簡體   English   中英

使用mod運算符的Oracle查詢

[英]Oracle query using mod operator

我有一個春季批處理,嘗試從下表中每5分鍾將待處理的文檔上載到服務器。 當前,在5次未成功上傳文件的嘗試之后,該批處理會將記錄標記為失敗並發送通知電子郵件。 我正在嘗試增強此批處理,以嘗試在5次嘗試之后有6小時的間隔再上傳2次。 也就是說,直到FAIL_CTR達到5時,才會嘗試每5分鍾上傳一次記錄。 FAIL_CTR達到5后,將嘗試每6小時上傳一次記錄。

到目前為止,這是我為查詢選擇的要上傳的批處理記錄的內容。 問題是,對於已失敗5次的記錄,在第6小時,批次將嘗試每5分鍾上傳一次。 我只需要在第5次嘗試后6小時后和第6次嘗試后6小時后再執行一次即可。 我該如何實現?

select * from SUPPORT_DOCS DOCS   
        where (DOCS.FAIL_CTR < 5  OR (DOCS.FAIL_CTR < 7 AND floor(mod(24*(SYSDATE-DOCS.LAST_ATTEMPTED_DATE),6))=0))
        and DOCS.STATUS='F';

表

我認為邏輯是

 Select * from SUPPORT_DOCS DOCS   
    where (
      (DOCS.FAIL_CTR < 5  OR 
      (DOCS.FAIL_CTR = 5 AND SYSDATE-DOCS.LAST_ATTEMPTED_DATE > 0.25) OR 
      (DOCS.FAIL_CTR = 6 AND SYSDATE-DOCS.LAST_ATTEMPTED_DATE > 0.5)
    )
    and DOCS.STATUS='F';

oracle中的date1-date2以天為單位生成結果,因此您要在重試之前延遲四分之一天,然后再延遲半天。 我假設重試會可靠地更新上一次嘗試的日期並增加失敗計數器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM