Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Комментарий: оформление

...

Пример скрипта создания задания:

Блок кода
languagesql
collapsetrue
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;
/

...