De query uit mijn vorige topic ([ORA-SQL]geen output genereren bij NULL) werkt prima, maar ik loop tegen 1 nadeel op:
Doordat de query ook 's nachts en in het weekend blijft draaien (query is in een externe applicatie iedere 30 min gedraaid) en er dan meestal geen EDI verkeer is, hebben we iedere ochtend een flinke zooi alarm-mails in onze mailbox
De applicatie bied helaas niet de mogelijk in te stellen dat een query enkel ma-vr 08.00 - 17.00 gedraaid moet worden. Dit zou ik nu dus in de query zelf willen verzorgen: ik wil enkel output tussen die tijden (en bij voorkeur ook enkel op ma t/m vr)
Voor de beperking op de tijden had ik het volgende in gedachte:
Dit blijkt niet te werken.
totale query is dus
Zorgen dat we enkel output krijgen op ma-vr was ik nog niet aan uit hoe dat zou moeten - ongetwijfeld ook via de sysdate functie, maar verder ben ik nog niet gekomen.
Hopelijk kan een van jullie me vertellen wat ik verkeerd doe
Doordat de query ook 's nachts en in het weekend blijft draaien (query is in een externe applicatie iedere 30 min gedraaid) en er dan meestal geen EDI verkeer is, hebben we iedere ochtend een flinke zooi alarm-mails in onze mailbox

De applicatie bied helaas niet de mogelijk in te stellen dat een query enkel ma-vr 08.00 - 17.00 gedraaid moet worden. Dit zou ik nu dus in de query zelf willen verzorgen: ik wil enkel output tussen die tijden (en bij voorkeur ook enkel op ma t/m vr)
Voor de beperking op de tijden had ik het volgende in gedachte:
SQL:
1
| where to_char(sysdate,'HH24') BETWEEN 08 AND 17 |
Dit blijkt niet te werken.
totale query is dus
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| select 'Check FTP logs - no traffic received in last 2 hours' AS Warning, count(*) from ( SELECT distinct inbox_trans_old.file_id, datetime_arrival FROM inbox_trans_old, transaction_status, inbox_old, inbox_trans_tag_old WHERE substr(inbox_trans_old.file_id,1,3) IN ('ADV','ORD','ITM','CUS') AND to_char(inbox_old.datetime_arrival, 'YYYY-MM-DD HH24-MI-SS') between to_char(sysdate -(2/24),'YYYY-MM-DD HH24-MI-SS') and to_char(sysdate,'YYYY-MM-DD HH24-MI-SS') AND (inbox_trans_old.trans_status = transaction_status.trans_status(+)) AND (inbox_trans_old.file_id = inbox_old.file_id) AND (inbox_trans_old.file_id = inbox_trans_tag_old.file_id AND inbox_trans_old.transaction_id = inbox_trans_tag_old.transaction_id AND inbox_trans_tag_old.tag = '1004') UNION ALL SELECT distinct inbox_trans.file_id, datetime_arrival FROM inbox_trans, transaction_status, inbox, inbox_trans_tag WHERE substr(inbox_trans.file_id,1,3) IN ('ADV','ORD','ITM','CUS') AND to_char(inbox.datetime_arrival, 'YYYY-MM-DD HH24-MI-SS') between to_char(sysdate - (2/24),'YYYY-MM-DD HH24-MI-SS') and to_char(sysdate,'YYYY-MM-DD HH24-MI-SS') AND (inbox_trans.trans_status = transaction_status.trans_status(+)) AND (inbox_trans.file_id = inbox.file_id) AND (inbox_trans.file_id = inbox_trans_tag.file_id AND inbox_trans.transaction_id = inbox_trans_tag.transaction_id AND inbox_trans_tag.tag = '1004')) where to_char(sysdate,'HH24') BETWEEN 08 AND 17 having count(*) = 0 |
Zorgen dat we enkel output krijgen op ma-vr was ik nog niet aan uit hoe dat zou moeten - ongetwijfeld ook via de sysdate functie, maar verder ben ik nog niet gekomen.
Hopelijk kan een van jullie me vertellen wat ik verkeerd doe
Your lack of planning is not my emergency