diff --git a/db/PKG_EXS.pck b/db/PKG_EXS.pck index 558df7c..1358739 100644 --- a/db/PKG_EXS.pck +++ b/db/PKG_EXS.pck @@ -377,6 +377,15 @@ create or replace package PKG_EXS as /* Помещение сообщения обмена в очередь */ procedure QUEUE_PUT + ( + NEXSSERVICEFN in number, -- Рег. номер функции обработки + BMSG in blob, -- Данные + NEXSQUEUE in number := null, -- Рег. номер связанной позиции очереди + NNEW_EXSQUEUE out number -- Курсор с добавленной позицией очереди + ); + + /* Помещение сообщения обмена в очередь (возвращает курсор с добавленной записью) */ + procedure QUEUE_PUT ( NEXSSERVICEFN in number, -- Рег. номер функции обработки BMSG in blob, -- Данные @@ -386,6 +395,16 @@ create or replace package PKG_EXS as /* Помещение сообщения обмена в очередь (по коду сервиса и функции обрабоки) */ procedure QUEUE_PUT + ( + SEXSSERVICE in varchar2, -- Мнемокод сервиса для обработки + SEXSSERVICEFN in varchar2, -- Мнемокод функции сервиса для обработки + BMSG in blob, -- Данные + NEXSQUEUE in number := null, -- Рег. номер связанной позиции очереди + NNEW_EXSQUEUE out number -- Курсор с добавленной позицией очереди + ); + + /* Помещение сообщения обмена в очередь (по коду сервиса и функции обрабоки, возвращает курсор с добавленной записью) */ + procedure QUEUE_PUT ( SEXSSERVICE in varchar2, -- Мнемокод сервиса для обработки SEXSSERVICEFN in varchar2, -- Мнемокод функции сервиса для обработки @@ -1557,10 +1576,9 @@ create or replace package body PKG_EXS as NEXSSERVICEFN in number, -- Рег. номер функции обработки BMSG in blob, -- Данные NEXSQUEUE in number := null, -- Рег. номер связанной позиции очереди - RCQUEUE out sys_refcursor -- Курсор с добавленной позицией очереди + NNEW_EXSQUEUE out number -- Курсор с добавленной позицией очереди ) is - NRN EXSQUEUE.RN%type; -- Рег. номер добавленной записи очереди begin /* Проверяем параметры */ if (NEXSSERVICEFN is null) then @@ -1577,7 +1595,22 @@ create or replace package body PKG_EXS as BMSG => BMSG, BRESP => null, NEXSQUEUE => NEXSQUEUE, - NRN => NRN); + NRN => NNEW_EXSQUEUE); + end QUEUE_PUT; + + /* Помещение сообщения обмена в очередь (возвращает курсор с добавленной записью) */ + procedure QUEUE_PUT + ( + NEXSSERVICEFN in number, -- Рег. номер функции обработки + BMSG in blob, -- Данные + NEXSQUEUE in number := null, -- Рег. номер связанной позиции очереди + RCQUEUE out sys_refcursor -- Курсор с добавленной позицией очереди + ) + is + NRN EXSQUEUE.RN%type; -- Рег. номер добавленной записи очереди + begin + /* Проверяем параметры */ + QUEUE_PUT(NEXSSERVICEFN => NEXSSERVICEFN, BMSG => BMSG, NEXSQUEUE => NEXSQUEUE, NNEW_EXSQUEUE => NRN); /* Возвращаем добавленную позицию очереди */ QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => NRN, RCQUEUE => RCQUEUE); end QUEUE_PUT; @@ -1589,7 +1622,7 @@ create or replace package body PKG_EXS as SEXSSERVICEFN in varchar2, -- Мнемокод функции сервиса для обработки BMSG in blob, -- Данные NEXSQUEUE in number := null, -- Рег. номер связанной позиции очереди - RCQUEUE out sys_refcursor -- Курсор с добавленной позицией очереди + NNEW_EXSQUEUE out number -- Курсор с добавленной позицией очереди ) is NEXSSERVICEFN PKG_STD.TREF; -- Рег. номер функции сервиса обработки @@ -1606,7 +1639,29 @@ create or replace package body PKG_EXS as SEXSSERVICE => SEXSSERVICE, SEXSSERVICEFN => SEXSSERVICEFN); /* Ставим запись в очередь */ - QUEUE_PUT(NEXSSERVICEFN => NEXSSERVICEFN, BMSG => BMSG, NEXSQUEUE => NEXSQUEUE, RCQUEUE => RCQUEUE); + QUEUE_PUT(NEXSSERVICEFN => NEXSSERVICEFN, BMSG => BMSG, NEXSQUEUE => NEXSQUEUE, NNEW_EXSQUEUE => NNEW_EXSQUEUE); + end QUEUE_PUT; + + /* Помещение сообщения обмена в очередь (по коду сервиса и функции обрабоки, возвращает курсор с добавленной записью) */ + procedure QUEUE_PUT + ( + SEXSSERVICE in varchar2, -- Мнемокод сервиса для обработки + SEXSSERVICEFN in varchar2, -- Мнемокод функции сервиса для обработки + BMSG in blob, -- Данные + NEXSQUEUE in number := null, -- Рег. номер связанной позиции очереди + RCQUEUE out sys_refcursor -- Курсор с добавленной позицией очереди + ) + is + NRN EXSQUEUE.RN%type; -- Рег. номер добавленной записи очереди + begin + /* Ставим запись в очередь */ + QUEUE_PUT(SEXSSERVICE => SEXSSERVICE, + SEXSSERVICEFN => SEXSSERVICEFN, + BMSG => BMSG, + NEXSQUEUE => NEXSQUEUE, + NNEW_EXSQUEUE => NRN); + /* Возвращаем добавленную позицию очереди */ + QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => NRN, RCQUEUE => RCQUEUE); end QUEUE_PUT; /* Исполнение обработчика для сообщения обмена */