P8-ExchangeService/db/UDO_PKG_EXS_TEST.pck

174 lines
7.1 KiB
Plaintext

create or replace package UDO_PKG_EXS_TEST as
/* Çàïðîñèòü êîíòðàãåíòà */
procedure RECIVE_AGENT
(
NREMOTE_AGENT in number -- Ðåã. íîìåð êîíòðàãåíòà â óäàë¸ííîé ÁÄ
);
/* Îáðàáîòêà îòâåòà ñ èíôîðìàöèåé î êîíòðàãåíòå îò òåñòîâîãî ñòåíäà */
procedure PROCESS_AGN_INFO_RESP
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
);
/* Îáðàáîòêà çàïðîñà íà ñîçäàíèå ñåññèè */
procedure RESP_LOGIN
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
);
/* Îáðàáîòêà çàïðîñà íà ïîèñê êîíòðàãåíòà */
procedure RESP_FIND_AGENT
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
);
/* Îáðàáîòêà çàïðîñà íà ïîèñê äîãîâîðà */
procedure RESP_FIND_CONTRACT
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
);
end;
/
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
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
)
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
/* Èíèöèàëèçèðóåì îðãàíèçàöèþ */
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 => SUBSTR(NIDENT || SAGNABBR, 1, 20),
SAGNNAME => SAGNNAME || ' ' || NIDENT,
NRN => NAGENT);
exception
when others then
PKG_EXS.PRC_RESP_ARG_STR_SET(NIDENT => NIDENT, SARG => PKG_EXS.SCONT_FLD_SERR, SVALUE => sqlerrm);
end;
/* Îáðàáîòêà çàïðîñà íà ñîçäàíèå ñåññèè */
procedure RESP_LOGIN
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
)
is
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
CTMP clob; -- Áóôåð äëÿ êîíâåðòàöèè
begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
/* Êîíâåðòèðóåì â êîäèðîâêó ÁÄ */
CTMP := BLOB2CLOB(LBDATA => REXSQUEUE.MSG, SCHARSET => 'UTF8');
/* Âûñòàâëÿåì ðåçóëüòàò îáðàáîòêè */
PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT,
SARG => PKG_EXS.SCONT_FLD_BRESP,
BVALUE => CLOB2BLOB(LCDATA => CTMP || ' ÎÁÐÀÁÎÒÊÀ ÏÀÐÓÑ 8', SCHARSET => 'UTF8'));
end;
/* Îáðàáîòêà çàïðîñà íà ïîèñê êîíòðàãåíòà */
procedure RESP_FIND_AGENT
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
)
is
begin
null;
end;
/* Îáðàáîòêà çàïðîñà íà ïîèñê äîãîâîðà */
procedure RESP_FIND_CONTRACT
(
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
)
is
begin
null;
end;
end;
/