...
Пример скрипта создания задания:
Блок кода | ||||
---|---|---|---|---|
| ||||
DECLARE vSQL clob; vRepeat_interval varchar2(200) := 'FREQ=MINUTELY;INTERVAL=20'; BEGIN vSQL := 'declare vInfo varchar2(4000); -- текст действия,отправляем vMaxLstUpdate date; -- Последнее изменение цены vMarketPlaceCode varchar2(2000); -- Имя площадки vNeedSend boolean := false; -- отправлять уведомление? vCNT number := 0; -- технический, проверить, что мы в принципе зашли в курсор vDateforCheck date := resman.td; -- Дата, с которой ищем котировки vIntervalMin number := 15; -- Интервал, сколько мы можем подождать котировку, в минутах begin vInfo := ''Формируем курсор. Время последней котировки в разрезе торговых систем''; for cur in (select nvl(max(vw.c$lastupdt),resman.td) as MaxLstUpdate, nvl(vw.market_place_code,''NO DATA FOUND'') as MarketPlaceCode from KIP.vw_quotations vw where 1=1 and vw.c$date >= vDateforCheck group by vw.market_place_code) loop null; vCNT := vCNT+1 ; vInfo := vInfo ||chr(10)||''Время последней котировки ''||to_char(cur.MaxLstUpdate,''dd.mm.yyyy HH24:MI:SS'')||'' торговая площадка ''||cur.MarketPlaceCode; IF sysdate-cur.MaxLstUpdate > (1/24/60)*15 THEN vInfo := vInfo ||chr(10)||'' Котировка не обновлялась более 15 минут. Площадка ''||cur.MarketPlaceCode; vNeedSend := true; END IF; end loop; IF vCNT = 0 and sysdate-vDateforCheck > (1/24/60)* NVL(vIntervalMin,1) THEN --проверим, что это не утро, не первые 15 минут нового дня vInfo := vInfo ||chr(10)||'' Сегодня ''|| to_char(vDateforCheck,''dd.mm.yyyy HH24:MI:SS'')||'' котировки еще не загружались''; vNeedSend := true; END IF; IF vNeedSend then resman.pkg_monitoring.send_msg(ialias_msg=>''NAVXLV5_TRANSPORT_ERR'',itext=>vInfo); end if; DBMS_OUTPUT.PUT_LINE(vInfo); end;'; DBMS_SCHEDULER.CREATE_JOB ( job_name => '"RESMAN"."JOB_PKG_MONITORING"', job_type => 'PLSQL_BLOCK', job_action => vSQL, number_of_arguments => 0, start_date => sysdate, repeat_interval => vRepeat_interval, end_date => NULL, enabled => FALSE, auto_drop => FALSE, comments => 'Мониторинг работы загрузки котировок в Хранилище, раз в 20 минут'); DBMS_SCHEDULER.SET_ATTRIBUTE( name => '"RESMAN"."JOB_KIP_EH_MONITORING"', attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF); DBMS_SCHEDULER.enable( name => '"RESMAN"."JOB_KIP_EH_MONITORING"'); END; / |
...