From 7e0b1ea83a7e677831e60b5b27455c987a5e3642 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Mon, 7 Jan 2019 19:22:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87?= =?UTF-8?q?=D0=B8=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BA=20=D0=B5=D0=B4=D0=B8=D0=BD=D0=BE=D0=BC?= =?UTF-8?q?=D1=83=20=D1=81=D1=82=D0=B0=D0=BD=D0=B4=D0=B0=D1=80=D1=82=D1=83?= =?UTF-8?q?=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=D0=B0=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=B0=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2=20PKG?= =?UTF-8?q?=5FEXS.PRC=5FRESP=5FRESULT=5FSET,=20=D0=BB=D0=B8=D0=BA=D0=B2?= =?UTF-8?q?=D0=B8=D0=B4=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D1=83=D0=B6=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=20NSRV=5FTYPE=20=D0=B2=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/UDO_PKG_EXS_ALICE.pck | 49 +++++++++++++++++++++++----------------- db/UDO_PKG_EXS_INV.pck | 28 +++++++++++++---------- db/UDO_PKG_EXS_TEST.pck | 22 ++++++++---------- 3 files changed, 54 insertions(+), 45 deletions(-) diff --git a/db/UDO_PKG_EXS_ALICE.pck b/db/UDO_PKG_EXS_ALICE.pck index ae6d0ba..56246db 100644 --- a/db/UDO_PKG_EXS_ALICE.pck +++ b/db/UDO_PKG_EXS_ALICE.pck @@ -4,7 +4,6 @@ create or replace package UDO_PKG_EXS_ALICE as procedure FIND_AGENT ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -12,7 +11,6 @@ create or replace package UDO_PKG_EXS_ALICE as procedure FIND_CONTRACT ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -20,7 +18,6 @@ create or replace package UDO_PKG_EXS_ALICE as procedure FIND_CONSUMERORD ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -28,7 +25,6 @@ create or replace package UDO_PKG_EXS_ALICE as procedure FIND_CONTACT ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -213,7 +209,6 @@ create or replace package body UDO_PKG_EXS_ALICE as procedure FIND_AGENT ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is @@ -292,16 +287,19 @@ create or replace package body UDO_PKG_EXS_ALICE as CRESP := 'Не понятно какого контрагента Вы хотите найти, извините...'; end if; /* Возвращаем ответ */ - PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, - SARG => PKG_EXS.SCONT_FLD_BRESP, - BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, + SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, + BRESP => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + exception + when others then + /* Вернём ошибку */ + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end FIND_AGENT; /* Обработка запроса на поиск договора */ procedure FIND_CONTRACT ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is @@ -393,22 +391,24 @@ create or replace package body UDO_PKG_EXS_ALICE as CRESP := 'Не понятно какой договор Вы хотите найти, извините...'; end if; /* Возвращаем ответ */ - PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, - SARG => PKG_EXS.SCONT_FLD_BRESP, - BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, + SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, + BRESP => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + exception + when others then + /* Вернём ошибку */ + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end FIND_CONTRACT; /* Обработка запроса на поиск заказа потребителя */ procedure FIND_CONSUMERORD ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is HELPER_PATTERNS THELPER_PATTERNS; -- Коллекция шаблонов вспомогательных слов поиска REXSQUEUE EXSQUEUE%rowtype; -- Запись позиции очереди - NSTATE_PROP PKG_STD.TREF; -- Рег. номер ДС для хранения состояния заказа CTMP clob; -- Буфер для конвертации CRESP clob; -- Данные для ответа RCTMP sys_refcursor; -- Буфер для измененной позиции очереди @@ -476,16 +476,19 @@ create or replace package body UDO_PKG_EXS_ALICE as CRESP := 'Не понятно какой заказ Вы хотите найти, извините...'; end if; /* Возвращаем ответ */ - PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, - SARG => PKG_EXS.SCONT_FLD_BRESP, - BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, + SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, + BRESP => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + exception + when others then + /* Вернём ошибку */ + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end FIND_CONSUMERORD; /* Обработка запроса на поиск контактной информации */ procedure FIND_CONTACT ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is @@ -561,9 +564,13 @@ create or replace package body UDO_PKG_EXS_ALICE as CRESP := 'Не понятно какую контактную информацию Вы хотите найти, извините...'; end if; /* Возвращаем ответ */ - PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, - SARG => PKG_EXS.SCONT_FLD_BRESP, - BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, + SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, + BRESP => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + exception + when others then + /* Вернём ошибку */ + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end FIND_CONTACT; end; diff --git a/db/UDO_PKG_EXS_INV.pck b/db/UDO_PKG_EXS_INV.pck index b7cf4d1..462209d 100644 --- a/db/UDO_PKG_EXS_INV.pck +++ b/db/UDO_PKG_EXS_INV.pck @@ -4,7 +4,6 @@ create or replace package UDO_PKG_EXS_INV as procedure CHECKAUTH ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -12,7 +11,6 @@ create or replace package UDO_PKG_EXS_INV as procedure GETUSERS ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -155,7 +153,6 @@ create or replace package body UDO_PKG_EXS_INV as procedure CHECKAUTH ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is @@ -204,19 +201,22 @@ create or replace package body UDO_PKG_EXS_INV as XRESULT := UTL_CREATENODE(XDOC => XDOC, STAG => SRESULT, SNS => STSD, SVAL => 'true'); XNODE := DBMS_XMLDOM.APPENDCHILD(N => XCHECKAUTHRESPONSE, NEWCHILD => XRESULT); /* Оборачиваем его в конверт */ - CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XCHECKAUTHRESPONSE); + CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XCHECKAUTHRESPONSE); end if; /* Возвращаем ответ */ - PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, - SARG => PKG_EXS.SCONT_FLD_BRESP, - BVALUE => CLOB2BLOB(LCDATA => CRESPONSE)); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, + SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, + BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); + exception + when others then + /* Вернём ошибку */ + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end CHECKAUTH; /* Электронная инвентаризация - считывание пользователей */ procedure GETUSERS ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is @@ -282,11 +282,15 @@ create or replace package body UDO_PKG_EXS_INV as end loop; /* Оборачиваем ответ в конверт */ CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETUSERSRESPONSE); - end if; + end if; /* Возвращаем ответ */ - PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, - SARG => PKG_EXS.SCONT_FLD_BRESP, - BVALUE => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, + SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, + BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); + exception + when others then + /* Вернём ошибку */ + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end GETUSERS; end; diff --git a/db/UDO_PKG_EXS_TEST.pck b/db/UDO_PKG_EXS_TEST.pck index 931084a..f609463 100644 --- a/db/UDO_PKG_EXS_TEST.pck +++ b/db/UDO_PKG_EXS_TEST.pck @@ -4,7 +4,6 @@ create or replace package UDO_PKG_EXS_TEST as procedure UTL_LOGIN ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -19,7 +18,6 @@ create or replace package UDO_PKG_EXS_TEST as procedure AGENT_PROCESS_INFO ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ); @@ -30,8 +28,7 @@ create or replace package body UDO_PKG_EXS_TEST as /* Обработка запроса на создание сессии */ procedure UTL_LOGIN ( - NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) + NIDENT in number, -- Идентификатор процесса NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is @@ -73,16 +70,16 @@ create or replace package body UDO_PKG_EXS_TEST as SAPPLICATION => 'Other', SCOMPANY => SCOMPANY); /* Выставляем результат обработки */ - PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, - SARG => PKG_EXS.SCONT_FLD_BRESP, - BVALUE => CLOB2BLOB(LCDATA => SCONNECT, SCHARSET => 'UTF8')); - + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, + SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, + BRESP => CLOB2BLOB(LCDATA => SCONNECT, SCHARSET => 'UTF8')); else - P_EXCEPTION(0, 'Не указано имя пользователя, пароль или организация.'); + P_EXCEPTION(0, + 'Не указано имя пользователя, пароль или организация.'); end if; exception when others then - PKG_EXS.PRC_RESP_ARG_STR_SET(NIDENT => NIDENT, SARG => PKG_EXS.SCONT_FLD_SERR, SVALUE => sqlerrm); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end UTL_LOGIN; /* Запросить контрагента на удалённом сервере */ @@ -106,7 +103,6 @@ create or replace package body UDO_PKG_EXS_TEST as procedure AGENT_PROCESS_INFO ( NIDENT in number, -- Идентификатор процесса - NSRV_TYPE in number, -- Тип сервиса (см. константы PKG_EXS.NSRV_TYPE*) NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена ) is @@ -173,9 +169,11 @@ create or replace package body UDO_PKG_EXS_TEST as SAGNABBR => SUBSTR(NIDENT || SAGNABBR, 1, 20), SAGNNAME => SAGNNAME || ' ' || NIDENT, NRN => NAGENT); + /* Фиксируем испех исполнения */ + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK); exception when others then - PKG_EXS.PRC_RESP_ARG_STR_SET(NIDENT => NIDENT, SARG => PKG_EXS.SCONT_FLD_SERR, SVALUE => sqlerrm); + PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); end AGENT_PROCESS_INFO; end;