Контроль наличия записи при считывании курсора по RN
This commit is contained in:
parent
e33e0ae2dc
commit
f683f44bca
@ -238,6 +238,7 @@ create or replace package PKG_EXS as
|
|||||||
/* Ïîëó÷åíèå ñåðâèñà */
|
/* Ïîëó÷åíèå ñåðâèñà */
|
||||||
procedure SERVICE_GET
|
procedure SERVICE_GET
|
||||||
(
|
(
|
||||||
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
||||||
RCSERVICE out sys_refcursor -- Êóðñîð ñî ñïèñêîì ñåðâèñîâ
|
RCSERVICE out sys_refcursor -- Êóðñîð ñî ñïèñêîì ñåðâèñîâ
|
||||||
);
|
);
|
||||||
@ -258,6 +259,7 @@ create or replace package PKG_EXS as
|
|||||||
/* Ïîëó÷åíèå ôóíêöèè ñåðâèñà */
|
/* Ïîëó÷åíèå ôóíêöèè ñåðâèñà */
|
||||||
procedure SERVICEFN_GET
|
procedure SERVICEFN_GET
|
||||||
(
|
(
|
||||||
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
NEXSSERVICEFN in number, -- Ðåã. íîìåð ôóíêöèè ñåðâèñà
|
NEXSSERVICEFN in number, -- Ðåã. íîìåð ôóíêöèè ñåðâèñà
|
||||||
RCSERVICEFN out sys_refcursor -- Êóðñîð ñî ñïèñêîì ôóíêöèé ñåðâèñà
|
RCSERVICEFN out sys_refcursor -- Êóðñîð ñî ñïèñêîì ôóíêöèé ñåðâèñà
|
||||||
);
|
);
|
||||||
@ -288,6 +290,7 @@ create or replace package PKG_EXS as
|
|||||||
/* Ñ÷èòûâàíèå çàïèñè æóðíàëà ðàáîòû */
|
/* Ñ÷èòûâàíèå çàïèñè æóðíàëà ðàáîòû */
|
||||||
procedure LOG_GET
|
procedure LOG_GET
|
||||||
(
|
(
|
||||||
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
NEXSLOG in number, -- Ðåã. íîìåð çàïèñè æóðíàëà
|
NEXSLOG in number, -- Ðåã. íîìåð çàïèñè æóðíàëà
|
||||||
RCLOG out sys_refcursor -- Êóðñîð ñî ñïèñêîì çàïèñåé æóðíàëà ðàáîòû
|
RCLOG out sys_refcursor -- Êóðñîð ñî ñïèñêîì çàïèñåé æóðíàëà ðàáîòû
|
||||||
);
|
);
|
||||||
@ -313,6 +316,7 @@ create or replace package PKG_EXS as
|
|||||||
/* Ñ÷èòûâàíèå ñîîáùåíèÿ èç î÷åðåäè */
|
/* Ñ÷èòûâàíèå ñîîáùåíèÿ èç î÷åðåäè */
|
||||||
procedure QUEUE_GET
|
procedure QUEUE_GET
|
||||||
(
|
(
|
||||||
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ ïîçèöèåé î÷åðåäè
|
RCQUEUE out sys_refcursor -- Êóðñîð ñ ïîçèöèåé î÷åðåäè
|
||||||
);
|
);
|
||||||
@ -973,17 +977,21 @@ create or replace package body PKG_EXS as
|
|||||||
/* Ïîëó÷åíèå ñåðâèñà */
|
/* Ïîëó÷åíèå ñåðâèñà */
|
||||||
procedure SERVICE_GET
|
procedure SERVICE_GET
|
||||||
(
|
(
|
||||||
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
RCSERVICE out sys_refcursor -- Êóðñîð ñî ñïèñêîì ñåðâèñîâ
|
NEXSSERVICE in number, -- Ðåã. íîìåð çàïèñè ñåðâèñà
|
||||||
|
RCSERVICE out sys_refcursor -- Êóðñîð ñî ñïèñêîì ñåðâèñîâ
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
REXSSERVICE EXSSERVICE%rowtype; -- Çàïèñü ñåðâèñà
|
||||||
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
||||||
|
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
||||||
begin
|
begin
|
||||||
|
/* Ñ÷èòàåì çàïèñü ñåðâèñà */
|
||||||
|
REXSSERVICE := GET_EXSSERVICE_ID(NFLAG_SMART => NFLAG_SMART, NRN => NEXSSERVICE);
|
||||||
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
||||||
NIDENT := GEN_IDENT();
|
NIDENT := GEN_IDENT();
|
||||||
/* Ïîëîæèì ðåã. íîìåð ñåðâèñà â áóôåð */
|
/* Ïîëîæèì ðåã. íîìåð ñåðâèñà â áóôåð */
|
||||||
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NEXSSERVICE, NRN => NTMP);
|
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NVL(REXSSERVICE.RN, NEXSSERVICE), NRN => NTMP);
|
||||||
/* Çàáèðàåì ñåðâèñ â âèäå êóðñîðà */
|
/* Çàáèðàåì ñåðâèñ â âèäå êóðñîðà */
|
||||||
SERVICE_GET(NIDENT => NIDENT, RCSERVICE => RCSERVICE);
|
SERVICE_GET(NIDENT => NIDENT, RCSERVICE => RCSERVICE);
|
||||||
/* ×èñòèì áóôåð */
|
/* ×èñòèì áóôåð */
|
||||||
@ -1063,20 +1071,24 @@ create or replace package body PKG_EXS as
|
|||||||
and T.EXSMSGTYPE = M.RN;
|
and T.EXSMSGTYPE = M.RN;
|
||||||
end SERVICEFN_GET;
|
end SERVICEFN_GET;
|
||||||
|
|
||||||
/* Ïîëó÷åíèå ôóíêöèè ñåðâèñà */
|
/* Ïîëó÷åíèå ôóíêöèè ñåðâèñà */
|
||||||
procedure SERVICEFN_GET
|
procedure SERVICEFN_GET
|
||||||
(
|
(
|
||||||
NEXSSERVICEFN in number, -- Ðåã. íîìåð ôóíêöèè ñåðâèñà
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
RCSERVICEFN out sys_refcursor -- Êóðñîð ñî ñïèñêîì ôóíêöèé ñåðâèñà
|
NEXSSERVICEFN in number, -- Ðåã. íîìåð ôóíêöèè ñåðâèñà
|
||||||
|
RCSERVICEFN out sys_refcursor -- Êóðñîð ñî ñïèñêîì ôóíêöèé ñåðâèñà
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
REXSSERVICEFN EXSSERVICEFN%rowtype; -- Çàïèñü ôóíêöèè ñåðâèñà
|
||||||
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
||||||
|
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
||||||
begin
|
begin
|
||||||
|
/* Ñ÷èòàåì çàïèñü ôóíêöèè ñåðâèñà */
|
||||||
|
REXSSERVICEFN := GET_EXSSERVICEFN_ID(NFLAG_SMART => NFLAG_SMART, NRN => NEXSSERVICEFN);
|
||||||
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
||||||
NIDENT := GEN_IDENT();
|
NIDENT := GEN_IDENT();
|
||||||
/* Ïîëîæèì ðåã. íîìåð ôóíêöèè ñåðâèñà â áóôåð */
|
/* Ïîëîæèì ðåã. íîìåð ôóíêöèè ñåðâèñà â áóôåð */
|
||||||
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NEXSSERVICEFN, NRN => NTMP);
|
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NVL(REXSSERVICEFN.RN, NEXSSERVICEFN), NRN => NTMP);
|
||||||
/* Çàáèðàåì ñåðâèñ â âèäå êóðñîðà */
|
/* Çàáèðàåì ñåðâèñ â âèäå êóðñîðà */
|
||||||
SERVICEFN_GET(NIDENT => NIDENT, RCSERVICEFN => RCSERVICEFN);
|
SERVICEFN_GET(NIDENT => NIDENT, RCSERVICEFN => RCSERVICEFN);
|
||||||
/* ×èñòèì áóôåð */
|
/* ×èñòèì áóôåð */
|
||||||
@ -1176,17 +1188,21 @@ create or replace package body PKG_EXS as
|
|||||||
/* Ñ÷èòûâàíèå çàïèñè æóðíàëà ðàáîòû */
|
/* Ñ÷èòûâàíèå çàïèñè æóðíàëà ðàáîòû */
|
||||||
procedure LOG_GET
|
procedure LOG_GET
|
||||||
(
|
(
|
||||||
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
NEXSLOG in number, -- Ðåã. íîìåð çàïèñè æóðíàëà
|
NEXSLOG in number, -- Ðåã. íîìåð çàïèñè æóðíàëà
|
||||||
RCLOG out sys_refcursor -- Êóðñîð ñî ñïèñêîì çàïèñåé æóðíàëà ðàáîòû
|
RCLOG out sys_refcursor -- Êóðñîð ñî ñïèñêîì çàïèñåé æóðíàëà ðàáîòû
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
|
REXSLOG EXSLOG%rowtype; -- Çàïèñü æóðíàëà ðàáîòû
|
||||||
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
||||||
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
||||||
begin
|
begin
|
||||||
|
/* Ñ÷èòàåì çàïèñü æóðíàëà ðàáîòû */
|
||||||
|
REXSLOG := GET_EXSLOG_ID(NFLAG_SMART => NFLAG_SMART, NRN => NEXSLOG);
|
||||||
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
||||||
NIDENT := GEN_IDENT();
|
NIDENT := GEN_IDENT();
|
||||||
/* Ïîëîæèì ðåã. íîìåð çàïèñè æóðíàëà ðàáîòû â áóôåð */
|
/* Ïîëîæèì ðåã. íîìåð çàïèñè æóðíàëà ðàáîòû â áóôåð */
|
||||||
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NEXSLOG, NRN => NTMP);
|
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NVL(REXSLOG.RN, NEXSLOG), NRN => NTMP);
|
||||||
/* Çàáèðàåì ïîçèöèþ î÷åðåäè â âèäå êóðñîðà */
|
/* Çàáèðàåì ïîçèöèþ î÷åðåäè â âèäå êóðñîðà */
|
||||||
LOG_GET(NIDENT => NIDENT, RCLOG => RCLOG);
|
LOG_GET(NIDENT => NIDENT, RCLOG => RCLOG);
|
||||||
/* ×èñòèì áóôåð */
|
/* ×èñòèì áóôåð */
|
||||||
@ -1245,7 +1261,7 @@ create or replace package body PKG_EXS as
|
|||||||
NEXSQUEUE => NEXSQUEUE,
|
NEXSQUEUE => NEXSQUEUE,
|
||||||
NRN => NEXSLOG);
|
NRN => NEXSLOG);
|
||||||
/* Âåðíåì äîáàâëåííóþ çàïèñü */
|
/* Âåðíåì äîáàâëåííóþ çàïèñü */
|
||||||
LOG_GET(NEXSLOG => NEXSLOG, RCLOG => RCLOG);
|
LOG_GET(NFLAG_SMART => 0, NEXSLOG => NEXSLOG, RCLOG => RCLOG);
|
||||||
end LOG_PUT;
|
end LOG_PUT;
|
||||||
|
|
||||||
/* Ñ÷èòûâàíèå ñîîáùåíèÿ èç î÷åðåäè */
|
/* Ñ÷èòûâàíèå ñîîáùåíèÿ èç î÷åðåäè */
|
||||||
@ -1303,17 +1319,21 @@ create or replace package body PKG_EXS as
|
|||||||
/* Ñ÷èòûâàíèå ñîîáùåíèÿ èç î÷åðåäè */
|
/* Ñ÷èòûâàíèå ñîîáùåíèÿ èç î÷åðåäè */
|
||||||
procedure QUEUE_GET
|
procedure QUEUE_GET
|
||||||
(
|
(
|
||||||
|
NFLAG_SMART in number, -- Ïðèçíàê âûäà÷è ñîîáùåíèÿ îá îøèáêå
|
||||||
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
NEXSQUEUE in number, -- Ðåã. íîìåð çàïèñè î÷åðåäè
|
||||||
RCQUEUE out sys_refcursor -- Êóðñîð ñ ïîçèöèåé î÷åðåäè
|
RCQUEUE out sys_refcursor -- Êóðñîð ñ ïîçèöèåé î÷åðåäè
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
|
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||||
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
NIDENT PKG_STD.TREF; -- Èäåíòèôèêàòîð áóôåðà
|
||||||
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
NTMP PKG_STD.TREF; -- Ðåã. íîìåð î÷åðåäíîé çàïèñè áóôåðà
|
||||||
begin
|
begin
|
||||||
|
/* Ñ÷èòàåì çàïèñü ïîçèöèè î÷åðåäè */
|
||||||
|
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => NFLAG_SMART, NRN => NEXSQUEUE);
|
||||||
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
/* Ñôîðìèðóåì èäåíòèôèêàòîð áóôåðà */
|
||||||
NIDENT := GEN_IDENT();
|
NIDENT := GEN_IDENT();
|
||||||
/* Ïîëîæèì ðåã. íîìåð çàïèñè î÷åðåäè â áóôåð */
|
/* Ïîëîæèì ðåã. íîìåð çàïèñè î÷åðåäè â áóôåð */
|
||||||
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NEXSQUEUE, NRN => NTMP);
|
RNLIST_BASE_INSERT(NIDENT => NIDENT, NDOCUMENT => NVL(REXSQUEUE.RN, NEXSQUEUE), NRN => NTMP);
|
||||||
/* Çàáèðàåì ïîçèöèþ î÷åðåäè â âèäå êóðñîðà */
|
/* Çàáèðàåì ïîçèöèþ î÷åðåäè â âèäå êóðñîðà */
|
||||||
QUEUE_GET(NIDENT => NIDENT, RCQUEUE => RCQUEUE);
|
QUEUE_GET(NIDENT => NIDENT, RCQUEUE => RCQUEUE);
|
||||||
/* ×èñòèì áóôåð */
|
/* ×èñòèì áóôåð */
|
||||||
@ -1443,7 +1463,7 @@ create or replace package body PKG_EXS as
|
|||||||
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NEXSQUEUE, SUNIT_TABLE => 'EXSQUEUE');
|
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NEXSQUEUE, SUNIT_TABLE => 'EXSQUEUE');
|
||||||
end if;
|
end if;
|
||||||
/* Âåðíåì èçìåíåííóþ ïîçèöèþ î÷åðåäè */
|
/* Âåðíåì èçìåíåííóþ ïîçèöèþ î÷åðåäè */
|
||||||
QUEUE_GET(NEXSQUEUE => NEXSQUEUE, RCQUEUE => RCQUEUE);
|
QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => NEXSQUEUE, RCQUEUE => RCQUEUE);
|
||||||
end QUEUE_EXEC_STATE_SET;
|
end QUEUE_EXEC_STATE_SET;
|
||||||
|
|
||||||
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè */
|
/* Óñòàíîâêà ðåçóëüòàòà îáðàáîòêè çàïèñè î÷åðåäè */
|
||||||
@ -1457,8 +1477,11 @@ create or replace package body PKG_EXS as
|
|||||||
begin
|
begin
|
||||||
/* Âûñòàâèì ðåçóëüòàò */
|
/* Âûñòàâèì ðåçóëüòàò */
|
||||||
update EXSQUEUE T set T.RESP = BRESP where T.RN = NEXSQUEUE;
|
update EXSQUEUE T set T.RESP = BRESP where T.RN = NEXSQUEUE;
|
||||||
|
if (sql%rowcount = 0) then
|
||||||
|
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NEXSQUEUE, SUNIT_TABLE => 'EXSQUEUE');
|
||||||
|
end if;
|
||||||
/* Âåðíåì èçìåíåííóþ ïîçèöèþ î÷åðåäè */
|
/* Âåðíåì èçìåíåííóþ ïîçèöèþ î÷åðåäè */
|
||||||
QUEUE_GET(NEXSQUEUE => NEXSQUEUE, RCQUEUE => RCQUEUE);
|
QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => NEXSQUEUE, RCQUEUE => RCQUEUE);
|
||||||
end QUEUE_RESP_SET;
|
end QUEUE_RESP_SET;
|
||||||
|
|
||||||
/* Ïîìåùåíèå ñîîáùåíèÿ îáìåíà â î÷åðåäü */
|
/* Ïîìåùåíèå ñîîáùåíèÿ îáìåíà â î÷åðåäü */
|
||||||
@ -1489,7 +1512,7 @@ create or replace package body PKG_EXS as
|
|||||||
NEXSQUEUE => NEXSQUEUE,
|
NEXSQUEUE => NEXSQUEUE,
|
||||||
NRN => NRN);
|
NRN => NRN);
|
||||||
/* Âîçâðàùàåì äîáàâëåííóþ ïîçèöèþ î÷åðåäè */
|
/* Âîçâðàùàåì äîáàâëåííóþ ïîçèöèþ î÷åðåäè */
|
||||||
QUEUE_GET(NEXSQUEUE => NRN, RCQUEUE => RCQUEUE);
|
QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => NRN, RCQUEUE => RCQUEUE);
|
||||||
end QUEUE_PUT;
|
end QUEUE_PUT;
|
||||||
|
|
||||||
/* Ïîìåùåíèå ñîîáùåíèÿ îáìåíà â î÷åðåäü (ïî êîäó ñåðâèñà è ôóíêöèè îáðàáîêè) */
|
/* Ïîìåùåíèå ñîîáùåíèÿ îáìåíà â î÷åðåäü (ïî êîäó ñåðâèñà è ôóíêöèè îáðàáîêè) */
|
||||||
@ -1590,7 +1613,7 @@ create or replace package body PKG_EXS as
|
|||||||
PKG_CONTPRMLOC.PURGE(RCONTAINER => PRMS);
|
PKG_CONTPRMLOC.PURGE(RCONTAINER => PRMS);
|
||||||
end if;
|
end if;
|
||||||
/* Âîçâðàùàåì îáðàáîòàííóþ ïîçèöèþ î÷åðåäè */
|
/* Âîçâðàùàåì îáðàáîòàííóþ ïîçèöèþ î÷åðåäè */
|
||||||
QUEUE_GET(NEXSQUEUE => REXSQUEUE.RN, RCQUEUE => RCQUEUE);
|
QUEUE_GET(NFLAG_SMART => 0, NEXSQUEUE => REXSQUEUE.RN, RCQUEUE => RCQUEUE);
|
||||||
end QUEUE_PRC;
|
end QUEUE_PRC;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user