Процедура выполнения запроса из раздела Контрагенты, дописана процедура обработки ответа с информацией о контрагенте
This commit is contained in:
parent
4dc3c9fc8d
commit
e5b375a39d
@ -1,5 +1,11 @@
|
|||||||
create or replace package UDO_PKG_EXS_TEST as
|
create or replace package UDO_PKG_EXS_TEST as
|
||||||
|
|
||||||
|
/* Çàïðîñèòü êîíòðàãåíòà */
|
||||||
|
procedure RECIVE_AGENT
|
||||||
|
(
|
||||||
|
NREMOTE_AGENT in number -- Ðåã. íîìåð êîíòðàãåíòà â óäàë¸ííîé ÁÄ
|
||||||
|
);
|
||||||
|
|
||||||
/* Îáðàáîòêà îòâåòà ñ èíôîðìàöèåé î êîíòðàãåíòå îò òåñòîâîãî ñòåíäà */
|
/* Îáðàáîòêà îòâåòà ñ èíôîðìàöèåé î êîíòðàãåíòå îò òåñòîâîãî ñòåíäà */
|
||||||
procedure PROCESS_AGN_INFO_RESP
|
procedure PROCESS_AGN_INFO_RESP
|
||||||
(
|
(
|
||||||
@ -12,16 +18,83 @@ end;
|
|||||||
/
|
/
|
||||||
create or replace package body UDO_PKG_EXS_TEST as
|
create or replace package body UDO_PKG_EXS_TEST as
|
||||||
|
|
||||||
|
/* Çàïðîñèòü êîíòðàãåíòà */
|
||||||
|
procedure RECIVE_AGENT
|
||||||
|
(
|
||||||
|
NREMOTE_AGENT in number -- Ðåã. íîìåð êîíòðàãåíòà â óäàë¸ííîé ÁÄ
|
||||||
|
)
|
||||||
|
is
|
||||||
|
SEXSSERVICEFN EXSSERVICEFN.CODE%type; -- Ìíåìîêîä ôóíêöèè ñåðâèñà
|
||||||
|
NEXSSERVICEFN EXSSERVICEFN.RN%type; -- Ðåã. íîìåð ôóíêöèè ñåðâèñà
|
||||||
|
RCTMP sys_refcursor; -- Áóôåð äëÿ èçìåíåííîé ïîçèöèè î÷åðåäè
|
||||||
|
begin
|
||||||
|
/* èíèöèàëèçèðóåì ìíåìîêîä ôóíêöèè ñåðâèñà */
|
||||||
|
SEXSSERVICEFN := 'Ïîëó÷åíèåÊîíòðàãåíòà';
|
||||||
|
/* Íàéäåì ðåã. íîìåð ôóíêöèè ñåðâñèâà */
|
||||||
|
FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICEFN, NRN => NEXSSERVICEFN);
|
||||||
|
/* Ïîìåñòèì çàäàíèå â î÷åðåäü */
|
||||||
|
PKG_EXS.QUEUE_PUT(NEXSSERVICEFN => NEXSSERVICEFN,
|
||||||
|
BMSG => CLOB2BLOB(LCDATA => TO_CHAR(NREMOTE_AGENT)),
|
||||||
|
RCQUEUE => RCTMP);
|
||||||
|
end;
|
||||||
|
|
||||||
/* Îáðàáîòêà îòâåòà ñ èíôîðìàöèåé î êîíòðàãåíòå îò òåñòîâîãî ñòåíäà */
|
/* Îáðàáîòêà îòâåòà ñ èíôîðìàöèåé î êîíòðàãåíòå îò òåñòîâîãî ñòåíäà */
|
||||||
procedure PROCESS_AGN_INFO_RESP
|
procedure PROCESS_AGN_INFO_RESP
|
||||||
(
|
(
|
||||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
|
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
|
||||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
|
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||||
|
CTMP clob; -- Áóôåð äëÿ êîíâåðòàöèè
|
||||||
|
RCTMP sys_refcursor; -- Áóôåð äëÿ èçìåíåííîé ïîçèöèè î÷åðåäè
|
||||||
|
NCOMPANY PKG_STD.TREF; -- Ðåã. íîìåð îðãàíèçàöèè
|
||||||
|
NVERSION PKG_STD.TREF; -- Ðåã. íîìåð âåðñèè
|
||||||
|
NCRN PKG_STD.TREF; -- Ðåã. íîìåð êàòàëîãà
|
||||||
|
SAGNABBR AGNLIST.AGNABBR%type; -- Ìíåìîêîä êîíòðàãåíòà
|
||||||
|
SAGNNAME AGNLIST.AGNNAME%type; -- Íàèìåíîâàíèå êîíòðàãåíòà
|
||||||
|
NAGENT AGNLIST.RN%type; -- Ðåã. íîìåð äîáàâëåííîãî êîíòðàãåíòà
|
||||||
begin
|
begin
|
||||||
null;
|
/* Èíèöèàëèçèðóåì îðãàíèçàöèþ */
|
||||||
|
NCOMPANY := 136018;
|
||||||
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
|
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||||
|
/* Êîíâåðòèðóåì â êîäèðîâêó ÁÄ */
|
||||||
|
CTMP := BLOB2CLOB(LBDATA => REXSQUEUE.RESP, SCHARSET => 'UTF8');
|
||||||
|
/* Êëàä¸ì êîíâåðòèðîâàííîå îáðàòíî (ïðîñòî äëÿ óäîáñòâà ìîíèòîðèíãà) */
|
||||||
|
PKG_EXS.QUEUE_RESP_SET(NEXSQUEUE => REXSQUEUE.RN, BRESP => CLOB2BLOB(LCDATA => CTMP), RCQUEUE => RCTMP);
|
||||||
|
/* Ðàçáèðàåì îòâåò ñåðâåðà */
|
||||||
|
declare
|
||||||
|
SSPR varchar2(3) := '$#$';
|
||||||
|
NSPRL number := LENGTH(SSPR);
|
||||||
|
begin
|
||||||
|
SAGNABBR := SUBSTR(CTMP, 1, INSTR(CTMP, SSPR) - 1);
|
||||||
|
SAGNNAME := SUBSTR(CTMP, INSTR(CTMP, SSPR) + NSPRL);
|
||||||
|
exception
|
||||||
|
when others then
|
||||||
|
P_EXCEPTION(0, 'Íåîæèäàííûé îòâåò ñåðâåðà');
|
||||||
|
end;
|
||||||
|
if (SAGNABBR is null) then
|
||||||
|
P_EXCEPTION(0, 'Â îòâåòå ñåðâåðà íå óêàçàí ìíåìîêîä êîíòðàãåíòà');
|
||||||
|
end if;
|
||||||
|
if (SAGNNAME is null) then
|
||||||
|
P_EXCEPTION(0,
|
||||||
|
'Â îòâåòå ñåðâåðà íå óêàçàíî íàèìåíîâàíèå êîíòðàãåíòà');
|
||||||
|
end if;
|
||||||
|
/* Íàéä¸ì êàòàëîã */
|
||||||
|
FIND_ACATALOG_NAME(NFLAG_SMART => 0,
|
||||||
|
NCOMPANY => NCOMPANY,
|
||||||
|
NVERSION => null,
|
||||||
|
SUNITCODE => 'AGNLIST',
|
||||||
|
SNAME => 'ExchangeService',
|
||||||
|
NRN => NCRN);
|
||||||
|
/* Ðåãèñòðèðóåì êîíòðàãåíòà */
|
||||||
|
P_AGNLIST_BASE_INSERT(NCOMPANY => NCOMPANY,
|
||||||
|
NCRN => NCRN,
|
||||||
|
SAGNABBR => SAGNABBR,
|
||||||
|
SAGNNAME => SAGNNAME,
|
||||||
|
NRN => NAGENT);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user