Выдача сообщений об ошибках обмена в виде ответа специального формата

This commit is contained in:
Mikhail Chechnev 2019-01-15 18:15:42 +03:00
parent bb5840f37d
commit c9ef8f21d7

View File

@ -121,6 +121,44 @@ create or replace package body UDO_PKG_EXS_INV as
SMESSAGE constant varchar2(40) := 'Message'; SMESSAGE constant varchar2(40) := 'Message';
SERRORMESSAGE constant varchar2(40) := 'ErrorMessage'; SERRORMESSAGE constant varchar2(40) := 'ErrorMessage';
/* Íîðìàëèçàöèÿ ñîîáùåíèÿ îá îøèáêå */
function UTL_CORRECT_ERR
(
SERR varchar2 -- Ñîîáùåíèå îá îøèáêå
) return varchar2 -- Íîðìàëèçîâàííîå ñîîáùåíèå îá îøèáêå
is
STMP PKG_STD.TSTRING; -- Áóôåð äëÿ îáðàáîòêè
SRES PKG_STD.TSTRING; -- Ðåçóëüòàò ðàáîòû
NB PKG_STD.TLNUMBER; -- Ïîçèöèÿ íà÷àëà óäàëÿåìîé ïîäñòðîêè
NE PKG_STD.TLNUMBER; -- Ïîçèöèÿ îêîí÷àíèÿ óäàëÿåìîé ïîäñòðîêè
begin
/* Èíèöèàëèçèðóåì áóôåð */
STMP := SERR;
/* Óäàëÿåì ëèøíèå ñïåöñèìâîëû è òåõíè÷åñêóþ èíôîðìàöèþ èç îøèáêè */
begin
while (INSTR(STMP
,'ORA') <> 0)
loop
NB := INSTR(STMP
,'ORA');
NE := INSTR(STMP
,':'
,NB);
STMP := trim(replace(STMP
,trim(SUBSTR(STMP
,NB
,NE - NB + 1))
,''));
end loop;
SRES := STMP;
exception
when others then
SRES := SERR;
end;
/* Âîçâðàùàåì ðåçóëüàò */
return SRES;
end UTL_CORRECT_ERR;
/* Ñîçäàíèå âåòêè XML */ /* Ñîçäàíèå âåòêè XML */
function UTL_CREATENODE function UTL_CREATENODE
( (
@ -241,17 +279,19 @@ create or replace package body UDO_PKG_EXS_INV as
/* Ôîðìèðîâàíèå îòâåòà ñ îøèáêîé */ /* Ôîðìèðîâàíèå îòâåòà ñ îøèáêîé */
function UTL_CREATEERRORRESPONSE function UTL_CREATEERRORRESPONSE
( (
XDOC in DBMS_XMLDOM.DOMDOCUMENT, -- Äîêóìåíò
SMSG in varchar2 -- Ñîîáùåíèå îá îøèáêå SMSG in varchar2 -- Ñîîáùåíèå îá îøèáêå
) return clob -- Ðåçóëüòàò ðàáîòû ) return clob -- Ðåçóëüòàò ðàáîòû
is is
XFAULT DBMS_XMLDOM.DOMNODE; -- XDOC DBMS_XMLDOM.DOMDOCUMENT; -- Äîêóìåíò
XDETAIL DBMS_XMLDOM.DOMNODE; -- XFAULT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé óçåë
XERRMSG DBMS_XMLDOM.DOMNODE; -- XDETAIL DBMS_XMLDOM.DOMNODE; -- Óçåë äëÿ äåòàëèçàöèè îøèáêè
XMSG DBMS_XMLDOM.DOMNODE; -- XERRMSG DBMS_XMLDOM.DOMNODE; -- Óçåë ñ ñîîáùåíèåì îá îøèáêå
XNODE DBMS_XMLDOM.DOMNODE; -- XMSG DBMS_XMLDOM.DOMNODE; -- Óçåë òåêñòîì ñîîáùåíèÿ
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ óçëà
CDATA clob; -- Áóôåð äëÿ ðåçóëüòàòà CDATA clob; -- Áóôåð äëÿ ðåçóëüòàòà
begin begin
/* Ñîçäà¸ì äîêóìåíò äëÿ îòâåòà */
UTL_CREATERESPONSEDOC(XDOC => XDOC);
/* Ñîáèðàåì îøèáêó â îòâåò */ /* Ñîáèðàåì îøèáêó â îòâåò */
XFAULT := UTL_CREATENODE(XDOC => XDOC, STAG => SFAULT, SNS => SSOAPENV); XFAULT := UTL_CREATENODE(XDOC => XDOC, STAG => SFAULT, SNS => SSOAPENV);
XDETAIL := UTL_CREATENODE(XDOC => XDOC, STAG => SDETAIL); XDETAIL := UTL_CREATENODE(XDOC => XDOC, STAG => SDETAIL);
@ -265,7 +305,6 @@ create or replace package body UDO_PKG_EXS_INV as
return CDATA; return CDATA;
end UTL_CREATEERRORRESPONSE; end UTL_CREATEERRORRESPONSE;
/* Ñ÷èòûâàíèå çíà÷åíèÿ ñòðóêòóðíîãî ýëåìåíòà èç èåðàðõèè àäðåñà ãåîãðàôè÷åñêîãî ïîíÿòèÿ */ /* Ñ÷èòûâàíèå çíà÷åíèÿ ñòðóêòóðíîãî ýëåìåíòà èç èåðàðõèè àäðåñà ãåîãðàôè÷åñêîãî ïîíÿòèÿ */
function UTL_GEOGRAFY_GET_HIER_ITEM function UTL_GEOGRAFY_GET_HIER_ITEM
( (
@ -311,6 +350,7 @@ create or replace package body UDO_PKG_EXS_INV as
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
CREQ clob; -- Áóôåð äëÿ çàïðîñà CREQ clob; -- Áóôåð äëÿ çàïðîñà
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
begin
begin begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */ /* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
@ -345,13 +385,18 @@ create or replace package body UDO_PKG_EXS_INV as
/* Îáîðà÷èâàåì åãî â êîíâåðò */ /* Îáîðà÷èâàåì åãî â êîíâåðò */
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XCHECKAUTHRESPONSE); CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XCHECKAUTHRESPONSE);
end if; end if;
exception
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
when others then
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
end;
/* Âîçâðàùàåì îòâåò */ /* Âîçâðàùàåì îòâåò */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
exception exception
when others then when others then
/* Âåðí¸ì îøèáêó */ /* Âåðí¸ì îøèáêó - ýòî ôàòàëüíàÿ */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end CHECKAUTH; end CHECKAUTH;
@ -377,6 +422,7 @@ create or replace package body UDO_PKG_EXS_INV as
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
CREQ clob; -- Áóôåð äëÿ çàïðîñà CREQ clob; -- Áóôåð äëÿ çàïðîñà
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
begin
begin begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */ /* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
@ -425,13 +471,18 @@ create or replace package body UDO_PKG_EXS_INV as
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */ /* Îáîðà÷èâàåì îòâåò â êîíâåðò */
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETUSERSRESPONSE); CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETUSERSRESPONSE);
end if; end if;
exception
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
when others then
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
end;
/* Âîçâðàùàåì îòâåò */ /* Âîçâðàùàåì îòâåò */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
exception exception
when others then when others then
/* Âåðí¸ì îøèáêó */ /* Âåðí¸ì îøèáêó - ýòî ôàòàëüíàÿ */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end GETUSERS; end GETUSERS;
@ -457,6 +508,7 @@ create or replace package body UDO_PKG_EXS_INV as
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
CREQ clob; -- Áóôåð äëÿ çàïðîñà CREQ clob; -- Áóôåð äëÿ çàïðîñà
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
begin
begin begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */ /* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
@ -507,13 +559,18 @@ create or replace package body UDO_PKG_EXS_INV as
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */ /* Îáîðà÷èâàåì îòâåò â êîíâåðò */
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETTYPESRESPONSE); CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETTYPESRESPONSE);
end if; end if;
exception
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
when others then
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
end;
/* Âîçâðàùàåì îòâåò */ /* Âîçâðàùàåì îòâåò */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
exception exception
when others then when others then
/* Âåðí¸ì îøèáêó */ /* Âåðí¸ì îøèáêó - ýòî ôàòàëüíàÿ */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end GETSHEETTYPES; end GETSHEETTYPES;
@ -547,6 +604,7 @@ create or replace package body UDO_PKG_EXS_INV as
SREQPREFIX PKG_STD.TSTRING; -- Ïðåôèêñ âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà) SREQPREFIX PKG_STD.TSTRING; -- Ïðåôèêñ âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
SREQNUMBER PKG_STD.TSTRING; -- Íîìåð âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà) SREQNUMBER PKG_STD.TSTRING; -- Íîìåð âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
DREQDATE PKG_STD.TLDATE; -- Äàòà âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà) DREQDATE PKG_STD.TLDATE; -- Äàòà âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
begin
begin begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */ /* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
@ -626,13 +684,18 @@ create or replace package body UDO_PKG_EXS_INV as
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */ /* Îáîðà÷èâàåì îòâåò â êîíâåðò */
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETSRESPONSE); CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETSRESPONSE);
end if; end if;
exception
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
when others then
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
end;
/* Âîçâðàùàåì îòâåò */ /* Âîçâðàùàåì îòâåò */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
exception exception
when others then when others then
/* Âåðí¸ì îøèáêó */ /* Âåðí¸ì îøèáêó - ýòî ôàòàëüíàÿ */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end GETSHEETS; end GETSHEETS;
@ -664,6 +727,7 @@ create or replace package body UDO_PKG_EXS_INV as
CREQ clob; -- Áóôåð äëÿ çàïðîñà CREQ clob; -- Áóôåð äëÿ çàïðîñà
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
NREQSHEETCODE PKG_STD.TREF; -- Âåäîìîñòü èç çàïðîñà (ïàðàìåòð îòáîðà) NREQSHEETCODE PKG_STD.TREF; -- Âåäîìîñòü èç çàïðîñà (ïàðàìåòð îòáîðà)
begin
begin begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */ /* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
@ -736,7 +800,10 @@ create or replace package body UDO_PKG_EXS_INV as
STAG => SSTORAGEMNEMOCODE, STAG => SSTORAGEMNEMOCODE,
SNS => STSD, SNS => STSD,
SVAL => REC.SSTORAGEMNEMOCODE); SVAL => REC.SSTORAGEMNEMOCODE);
XUSERCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SUSERCODE, SNS => STSD, SVAL => trim(REC.NINVPERSONS)); XUSERCODE := UTL_CREATENODE(XDOC => XDOC,
STAG => SUSERCODE,
SNS => STSD,
SVAL => trim(REC.NINVPERSONS));
XITEMCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SITEMCODE, SNS => STSD, SVAL => trim(REC.SIBARCODE)); XITEMCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SITEMCODE, SNS => STSD, SVAL => trim(REC.SIBARCODE));
XITEMNAME := UTL_CREATENODE(XDOC => XDOC, STAG => SITEMNAME, SNS => STSD, SVAL => trim(REC.SNOM_NAME)); XITEMNAME := UTL_CREATENODE(XDOC => XDOC, STAG => SITEMNAME, SNS => STSD, SVAL => trim(REC.SNOM_NAME));
XITEMMNEMOCODE := UTL_CREATENODE(XDOC => XDOC, XITEMMNEMOCODE := UTL_CREATENODE(XDOC => XDOC,
@ -768,13 +835,18 @@ create or replace package body UDO_PKG_EXS_INV as
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */ /* Îáîðà÷èâàåì îòâåò â êîíâåðò */
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETITEMSRESPONSE); CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETITEMSRESPONSE);
end if; end if;
exception
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
when others then
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
end;
/* Âîçâðàùàåì îòâåò */ /* Âîçâðàùàåì îòâåò */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
exception exception
when others then when others then
/* Âåðí¸ì îøèáêó */ /* Âåðí¸ì îøèáêó - ýòî ôàòàëüíàÿ */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end GETSHEETITEMS; end GETSHEETITEMS;
@ -810,6 +882,7 @@ create or replace package body UDO_PKG_EXS_INV as
CREQ clob; -- Áóôåð äëÿ çàïðîñà CREQ clob; -- Áóôåð äëÿ çàïðîñà
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
NREQSHEETCODE PKG_STD.TREF; -- Âåäîìîñòü èç çàïðîñà (ïàðàìåòð îòáîðà) NREQSHEETCODE PKG_STD.TREF; -- Âåäîìîñòü èç çàïðîñà (ïàðàìåòð îòáîðà)
begin
begin begin
/* Ñ÷èòàåì çàïèñü î÷åðåäè */ /* Ñ÷èòàåì çàïèñü î÷åðåäè */
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
@ -847,7 +920,7 @@ create or replace package body UDO_PKG_EXS_INV as
T.PLACE_NAME SNAME, T.PLACE_NAME SNAME,
UDO_F_GET_DOC_PROP_VAL_STR('LATITUDE', 'ObjPlace', T.RN) SLATITUDE, UDO_F_GET_DOC_PROP_VAL_STR('LATITUDE', 'ObjPlace', T.RN) SLATITUDE,
UDO_F_GET_DOC_PROP_VAL_STR('LONGITUDE', 'ObjPlace', T.RN) SLONGITUDE, UDO_F_GET_DOC_PROP_VAL_STR('LONGITUDE', 'ObjPlace', T.RN) SLONGITUDE,
nvl(T.ADDR_POST, G.POSTAL_CODE) SPOSTCODE, NVL(T.ADDR_POST, G.POSTAL_CODE) SPOSTCODE,
UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 1) SCOUNTRY, UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 1) SCOUNTRY,
UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 2) SREGION, UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 2) SREGION,
NVL(UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 8), NVL(UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 8),
@ -899,13 +972,18 @@ create or replace package body UDO_PKG_EXS_INV as
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */ /* Îáîðà÷èâàåì îòâåò â êîíâåðò */
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSTORAGESRESPONSE); CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSTORAGESRESPONSE);
end if; end if;
exception
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
when others then
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
end;
/* Âîçâðàùàåì îòâåò */ /* Âîçâðàùàåì îòâåò */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
exception exception
when others then when others then
/* Âåðí¸ì îøèáêó */ /* Âåðí¸ì îøèáêó - ýòî ôàòàëüíàÿ */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end GETSTORAGES; end GETSTORAGES;
@ -961,8 +1039,8 @@ create or replace package body UDO_PKG_EXS_INV as
NINVENTORY PKG_STD.TREF; -- Ðåã. íîìåð ÎÑ (êàðòî÷êè "Èíâåíòàðíîé êàðòîòåêè") NINVENTORY PKG_STD.TREF; -- Ðåã. íîìåð ÎÑ (êàðòî÷êè "Èíâåíòàðíîé êàðòîòåêè")
NCOMPANY PKG_STD.TREF; -- Ðåã. íîìåð îðãàíèçàöèè NCOMPANY PKG_STD.TREF; -- Ðåã. íîìåð îðãàíèçàöèè
NPROPERTY PKG_STD.TREF; -- Ðåã. íîìåð ÄÑ ïîçèöèè âåäîìîñòè èíâåíòàðèçàöèè äëÿ õðàíåíèÿ êîììåíòàðèÿ NPROPERTY PKG_STD.TREF; -- Ðåã. íîìåð ÄÑ ïîçèöèè âåäîìîñòè èíâåíòàðèçàöèè äëÿ õðàíåíèÿ êîììåíòàðèÿ
SERR PKG_STD.TSTRING; -- Áóôåð äëÿ îøèáîê
NTMP PKG_STD.TREF; -- Áóôåð äëÿ ðåã. íîìåðîâ NTMP PKG_STD.TREF; -- Áóôåð äëÿ ðåã. íîìåðîâ
begin
begin begin
/* Èíèöèàëèçèðóåì îðãàíèçàöèþ */ /* Èíèöèàëèçèðóåì îðãàíèçàöèþ */
NCOMPANY := 136018; NCOMPANY := 136018;
@ -1027,7 +1105,8 @@ create or replace package body UDO_PKG_EXS_INV as
/* Ñ÷èòûâàåì "Êîëè÷åñòâî ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */ /* Ñ÷èòûâàåì "Êîëè÷åñòâî ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
NREQQUANTITY := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SQUANTITY)); NREQQUANTITY := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SQUANTITY));
/* Ñ÷èòûâàåì "Äàòà ïðîâåäåíèÿ èíâåíòàðèçàöèè ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */ /* Ñ÷èòûâàåì "Äàòà ïðîâåäåíèÿ èíâåíòàðèçàöèè ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
DREQCHECKDATE := TO_DATE(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SCHECKDATE), 'YYYY-MM-DD"T"HH24:MI:SS'); DREQCHECKDATE := TO_DATE(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SCHECKDATE),
'YYYY-MM-DD"T"HH24:MI:SS');
/* Ñ÷èòûâàåì "Êîììåíòàðèé ÌÎË ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */ /* Ñ÷èòûâàåì "Êîììåíòàðèé ÌÎË ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
SREQCOMMENT := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SCOMMENT); SREQCOMMENT := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SCOMMENT);
/* Ñ÷èòûâàåì "Øèðîòà" (ïàðàìåòð ñîõðàíåíèÿ) */ /* Ñ÷èòûâàåì "Øèðîòà" (ïàðàìåòð ñîõðàíåíèÿ) */
@ -1065,11 +1144,13 @@ create or replace package body UDO_PKG_EXS_INV as
and T.BARCODE = SREQSTORAGECODE; and T.BARCODE = SREQSTORAGECODE;
exception exception
when NO_DATA_FOUND then when NO_DATA_FOUND then
SERR := 'Ìåñòîíàõîæäåíèå èíâåíòàðíûõ îáúåêòîâ ñ øòðèõ-êîäîì "' || SREQSTORAGECODE || '" íå íàéäåíî'; P_EXCEPTION(0,
'Ìåñòîíàõîæäåíèå èíâåíòàðíûõ îáúåêòîâ ñ øòðèõ-êîäîì "%s" íå íàéäåíî',
SREQSTORAGECODE);
end; end;
end if; end if;
/* Ïðîáóåì íàéòè ïîçèöèþ âåäîìîñòè èíâåíòàðèçàöèè ïî øòðèõ-êîäó (åñëè ïåðåäàí ðåã. íîìåð âåäîìîñòè è ïîêà íåò îøèáîê) */ /* Ïðîáóåì íàéòè ïîçèöèþ âåäîìîñòè èíâåíòàðèçàöèè ïî øòðèõ-êîäó (åñëè ïåðåäàí ðåã. íîìåð âåäîìîñòè è ïîêà íåò îøèáîê) */
if ((NREQSHEETCODE is not null) and (SERR is null)) then if (NREQSHEETCODE is not null) then
begin begin
select T.NRN select T.NRN
into NELINVOBJECT into NELINVOBJECT
@ -1088,12 +1169,12 @@ create or replace package body UDO_PKG_EXS_INV as
and T.COMPANY = NCOMPANY; and T.COMPANY = NCOMPANY;
exception exception
when NO_DATA_FOUND then when NO_DATA_FOUND then
SERR := 'Èíâåíòàðíàÿ êàðòî÷êà ñ øòðèõ-êîäîì "' || SREQITEMCODE || '" íå íàéäåíà'; P_EXCEPTION(0,
'Èíâåíòàðíàÿ êàðòî÷êà ñ øòðèõ-êîäîì "%s" íå íàéäåíà',
SREQITEMCODE);
end; end;
end; end;
end if; end if;
/* Åñëè íåò îøèáîê ïðè ïðîâåðêàõ */
if (SERR is null) then
/* È ó íàñ åñòü øòðèõêîä ôàêòè÷åñêîãî ìåñòîíàõîæäåíèÿ */ /* È ó íàñ åñòü øòðèõêîä ôàêòè÷åñêîãî ìåñòîíàõîæäåíèÿ */
if (SDICPLACEBARCODE is not null) then if (SDICPLACEBARCODE is not null) then
/* Åñëè ïîçèöèÿ âåäîìîñòè èíâåíòàðèçàöèè íàéäåíà */ /* Åñëè ïîçèöèÿ âåäîìîñòè èíâåíòàðèçàöèè íàéäåíà */
@ -1138,12 +1219,10 @@ create or replace package body UDO_PKG_EXS_INV as
NRN => NTMP); NRN => NTMP);
end if; end if;
else else
SERR := 'Íå óäàëîñü îïðåäåëèòü ôàêòè÷åñêîå ìåñòîíàõîæäåíèå'; P_EXCEPTION(0,
'Íå óäàëîñü îïðåäåëèòü ôàêòè÷åñêîå ìåñòîíàõîæäåíèå');
end if; end if;
end if; end if;
end if;
/* Åñëè íåò îøèáîê */
if (SERR is null) then
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */ /* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
XSAVESHEETITEMRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SSAVESHEETITEMRESPONSE, SNS => STSD); XSAVESHEETITEMRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SSAVESHEETITEMRESPONSE, SNS => STSD);
/* Ôîðìèðóåì ðåçóëüòàò */ /* Ôîðìèðóåì ðåçóëüòàò */
@ -1151,17 +1230,19 @@ create or replace package body UDO_PKG_EXS_INV as
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XSAVESHEETITEMRESPONSE, NEWCHILD => XITEM); XNODE := DBMS_XMLDOM.APPENDCHILD(N => XSAVESHEETITEMRESPONSE, NEWCHILD => XITEM);
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */ /* Îáîðà÷èâàåì îòâåò â êîíâåðò */
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XSAVESHEETITEMRESPONSE); CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XSAVESHEETITEMRESPONSE);
else
CRESPONSE := UTL_CREATEERRORRESPONSE(XDOC => XDOC, SMSG => SERR);
end if;
end if; end if;
exception
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
when others then
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
end;
/* Âîçâðàùàåì îòâåò */ /* Âîçâðàùàåì îòâåò */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK, SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8')); BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
exception exception
when others then when others then
/* Âåðí¸ì îøèáêó */ /* Âåðí¸ì îøèáêó - ýòî ôàòàëüíàÿ */
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm); PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
end SAVESHEETITEM; end SAVESHEETITEM;