From da02beb05c596e662f416e1d64d345b35af247f0 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Wed, 5 Dec 2018 22:24:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=B5=20"nRetryAttempts"=20?= =?UTF-8?q?=D0=B2=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B4=D0=B8,=20=D0=BC=D0=BE=D0=B4=D0=B8?= =?UTF-8?q?=D1=84=D0=B8=D0=BA=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B0=D0=BB=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D1=82=D0=BC=D0=B0=20=D0=B2=D1=8B=D0=B4=D0=B0?= =?UTF-8?q?=D1=87=D0=B8=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D1=83=20(=D0=BE=D1=82=D0=B4=D0=B0=D1=91=D0=BC=20?= =?UTF-8?q?=D0=B2=D1=81=D0=B5,=20=D0=BA=D1=80=D0=BE=D0=BC=D0=B5=20=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D1=8E=D1=89=D0=B8=D1=85=20=D1=84=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D1=81=D1=82=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=81=20=D1=83=D1=81=D0=BF=D0=B5=D1=85=20=D0=B8=D0=BB=D0=B8=20?= =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20=D0=B8=D0=BB=D0=B8=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=B0=D1=82=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D0=B5=D0=BC=D1=8B=D1=85=20=D0=B2=20=D1=82=D0=B5=D0=BA=D1=83?= =?UTF-8?q?=D1=89=D0=B8=D0=B9=20=D0=BC=D0=BE=D0=BC=D0=B5=D0=BD=D1=82),=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8=D1=82=D0=BC=D0=B0?= =?UTF-8?q?=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D1=8F=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20=D0=BE=D1=87=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B8=20(=D0=BF=D0=BE=D1=8F=D0=B2=D0=B8=D0=BB=D0=BE?= =?UTF-8?q?=D1=81=D1=8C=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=BD=D0=B5=20=D0=BC=D0=B5=D0=BD=D1=8F?= =?UTF-8?q?=D1=82=D1=8C=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5,=20=D0=B0=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D0=BE=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=BA=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D1=87=D1=91?= =?UTF-8?q?=D1=82=D1=87=D0=B8=D0=BA=20=D0=BF=D0=BE=D0=BF=D1=8B=D1=82=D0=BE?= =?UTF-8?q?=D0=BA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/PKG_EXS.pck | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/db/PKG_EXS.pck b/db/PKG_EXS.pck index 3a283cb..ce2a07c 100644 --- a/db/PKG_EXS.pck +++ b/db/PKG_EXS.pck @@ -339,7 +339,7 @@ create or replace package PKG_EXS as procedure QUEUE_EXEC_STATE_SET ( NEXSQUEUE in number, -- Рег. номер записи очереди - NEXEC_STATE in number, -- Устанавливаемое состояние + NEXEC_STATE in number, -- Устанавливаемое состояние (см. констнаты NQUEUE_EXEC_STATE_*, null - не менять) SEXEC_MSG in varchar2, -- Сообщение обработчика NINC_EXEC_CNT in number, -- Флаг инкремента счётчика исполнений (см. констнаты NINC_EXEC_CNT_*, null - не менять) RCQUEUE out sys_refcursor -- Курсор с изменённой позицией очереди @@ -1292,6 +1292,7 @@ create or replace package body PKG_EXS as T.EXEC_DATE "dExecDate", TO_CHAR(T.EXEC_DATE, 'dd.mm.yyyy hh24:mi:ss') "sExecDate", T.EXEC_CNT "nExecCnt", + F.RETRY_ATTEMPTS "nRetryAttempts", T.EXEC_STATE "nExecState", DECODE(T.EXEC_STATE, NQUEUE_EXEC_STATE_INQUEUE, @@ -1371,11 +1372,8 @@ create or replace package body PKG_EXS as REXSSERVICE := GET_EXSSERVICE_ID(NFLAG_SMART => 0, NRN => REXSSERVICEFN.PRN); /* Проверим условия исполнения - исходящее, недоисполнено, и остались попытки */ if ((REXSSERVICE.SRV_TYPE = NSRV_TYPE_SEND) and - (REXSQUEUE.EXEC_STATE in (NQUEUE_EXEC_STATE_INQUEUE, - NQUEUE_EXEC_STATE_APP_OK, - NQUEUE_EXEC_STATE_APP_ERR, - NQUEUE_EXEC_STATE_DB_ERR, - NQUEUE_EXEC_STATE_ERR)) and + (REXSQUEUE.EXEC_STATE not in + (NQUEUE_EXEC_STATE_OK, NQUEUE_EXEC_STATE_ERR, NQUEUE_EXEC_STATE_APP, NQUEUE_EXEC_STATE_DB)) and (((REXSSERVICEFN.RETRY_SCHEDULE <> NRETRY_SCHEDULE_UNDEF) and (REXSQUEUE.EXEC_CNT < REXSSERVICEFN.RETRY_ATTEMPTS)) or ((REXSSERVICEFN.RETRY_SCHEDULE = NRETRY_SCHEDULE_UNDEF) and (REXSQUEUE.EXEC_CNT = 0))) and @@ -1426,7 +1424,7 @@ create or replace package body PKG_EXS as procedure QUEUE_EXEC_STATE_SET ( NEXSQUEUE in number, -- Рег. номер записи очереди - NEXEC_STATE in number, -- Устанавливаемое состояние + NEXEC_STATE in number, -- Устанавливаемое состояние (см. констнаты NQUEUE_EXEC_STATE_*, null - не менять) SEXEC_MSG in varchar2, -- Сообщение обработчика NINC_EXEC_CNT in number, -- Флаг инкремента счётчика исполнений (см. констнаты NINC_EXEC_CNT_*, null - не менять) RCQUEUE out sys_refcursor -- Курсор с изменённой позицией очереди @@ -1439,15 +1437,16 @@ create or replace package body PKG_EXS as P_EXCEPTION(0, 'Не указан идентификатор позиции очереди для изменения состояния'); end if; - if (NEXEC_STATE not in (NQUEUE_EXEC_STATE_INQUEUE, - NQUEUE_EXEC_STATE_APP, - NQUEUE_EXEC_STATE_APP_OK, - NQUEUE_EXEC_STATE_APP_ERR, - NQUEUE_EXEC_STATE_DB, - NQUEUE_EXEC_STATE_DB_OK, - NQUEUE_EXEC_STATE_DB_ERR, - NQUEUE_EXEC_STATE_OK, - NQUEUE_EXEC_STATE_ERR)) then + if ((NEXEC_STATE is not null) and + (NEXEC_STATE not in (NQUEUE_EXEC_STATE_INQUEUE, + NQUEUE_EXEC_STATE_APP, + NQUEUE_EXEC_STATE_APP_OK, + NQUEUE_EXEC_STATE_APP_ERR, + NQUEUE_EXEC_STATE_DB, + NQUEUE_EXEC_STATE_DB_OK, + NQUEUE_EXEC_STATE_DB_ERR, + NQUEUE_EXEC_STATE_OK, + NQUEUE_EXEC_STATE_ERR))) then P_EXCEPTION(0, 'Код состояния "%s" позиции очереди не поддерживается', TO_CHAR(NEXEC_STATE)); @@ -1466,7 +1465,7 @@ create or replace package body PKG_EXS as /* Выставим состояние */ update EXSQUEUE T set T.EXEC_DATE = sysdate, - T.EXEC_STATE = NEXEC_STATE, + T.EXEC_STATE = NVL(NEXEC_STATE, T.EXEC_STATE), T.EXEC_CNT = REXSQUEUE.EXEC_CNT, T.EXEC_MSG = SEXEC_MSG where T.RN = NEXSQUEUE;