При удалении сервиса и функции у них могут быть записи журнала (не связанные с очередью обмена), при удалении со связями - удаляем и их

This commit is contained in:
Mikhail Chechnev 2019-01-12 11:03:29 +03:00
parent 3f337c5fde
commit d6ec6b19b7
2 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,34 @@
create or replace procedure P_EXSSERVICEFN_BASE_DELETE_LNK
(
NRN in number, -- Ðåãèñòðàöèîííûé íîìåð
NDLT_LINK_SIGN in number -- Óäàëèòü ñâÿçàííûå çàïèñè æóðíàëà ðàáîòû ñåðâèñà èíòåãðàöèè è î÷åðåäè îáìåíà
)
as
begin
/* Óäàëåíèå ñâÿçàííûõ çàïèñåé î÷åðåäè îáìåíà */
for REC in (select T.RN
from EXSQUEUE T
where T.EXSSERVICEFN = NRN
and NDLT_LINK_SIGN = 1)
loop
/* Ïðîâåðêà íà ñóùåñòâîâàíèå çàïèñè */
for REC_CHECK in (select 1 from EXSQUEUE T1 where T1.RN = REC.RN)
loop
/* Áàçîâîå óäàëåíèå ñ çàâèñèìîñòÿìè */
P_EXSQUEUE_BASE_DELETE_LNK(NRN => REC.RN, NDLT_LINK_SIGN => NDLT_LINK_SIGN);
end loop;
end loop;
/* Óäàëåíèå ñâÿçàííûõ çàïèñåé æóðíàëà ðàáîòû */
for REC in (select T.RN
from EXSLOG T
where T.EXSSERVICEFN = NRN
and NDLT_LINK_SIGN = 1)
loop
P_EXSLOG_BASE_DELETE(NRN => REC.RN);
end loop;
/* Áàçîâîå óäàëåíèå */
P_EXSSERVICEFN_BASE_DELETE(NRN => NRN);
end;
/

View File

@ -0,0 +1,40 @@
create or replace procedure P_EXSSERVICE_BASE_DELETE_LNK
(
NRN in number, -- Ðåãèñòðàöèîííûé íîìåð
NDLT_LINK_SIGN in number -- Óäàëèòü ñâÿçàííûå çàïèñè æóðíàëà ðàáîòû ñåðâèñà èíòåãðàöèè è î÷åðåäè îáìåíà
)
as
begin
/* Óäàëåíèå ñâÿçàííûõ çàïèñåé î÷åðåäè îáìåíà */
for REC in (select T.RN
from EXSQUEUE T
where T.EXSSERVICEFN in (select T1.RN from EXSSERVICEFN T1 where T1.PRN = NRN)
and NDLT_LINK_SIGN = 1)
loop
/* Ïðîâåðêà íà ñóùåñòâîâàíèå çàïèñè */
for REC_CHECK in (select 1 from EXSQUEUE T1 where T1.RN = REC.RN)
loop
/* Áàçîâîå óäàëåíèå ñ çàâèñèìîñòÿìè */
P_EXSQUEUE_BASE_DELETE_LNK(NRN => REC.RN, NDLT_LINK_SIGN => NDLT_LINK_SIGN);
end loop;
end loop;
/* Óäàëåíèå ñâÿçàííûõ çàïèñåé æóðíàëà ðàáîòû */
for REC in (select T.RN
from EXSLOG T
where T.EXSSERVICE = NRN
and NDLT_LINK_SIGN = 1)
loop
P_EXSLOG_BASE_DELETE(NRN => REC.RN);
end loop;
/* Óäàëåíèå ôóíêöèé ñ çàâèñèìîñòÿìè */
for REC in (select T.RN from EXSSERVICEFN T where T.PRN = NRN)
loop
P_EXSSERVICEFN_BASE_DELETE_LNK(NRN => REC.RN, NDLT_LINK_SIGN => NDLT_LINK_SIGN);
end loop;
/* Áàçîâîå óäàëåíèå */
P_EXSSERVICE_BASE_DELETE(NRN => NRN);
end;
/