diff --git a/db/P_EXSQUEUE_BASE_REPEAT.prc b/db/P_EXSQUEUE_BASE_REPEAT.prc new file mode 100644 index 0000000..3a14b3d --- /dev/null +++ b/db/P_EXSQUEUE_BASE_REPEAT.prc @@ -0,0 +1,34 @@ +create or replace procedure P_EXSQUEUE_BASE_REPEAT +( + NRN in number -- Регистрационный номер +) +as + NRN_NEW PKG_STD.TREF; -- Регистрационный номер добавленного сообщения +begin + /* Отбор записи */ + for REC in (select T.*, + S.SRV_TYPE + from EXSQUEUE T, + EXSSERVICEFN F, + EXSSERVICE S + where T.RN = NRN + and T.EXSSERVICEFN = F.RN + and F.PRN = S.RN) + loop + /* Если это не отправка сообщения */ + if (REC.SRV_TYPE != PKG_EXS.NSRV_TYPE_SEND) then + P_EXCEPTION(0, + 'Повторить отправку можно только для исходящего сообщения.'); + end if; + /* Помещение сообщения обмена в очередь */ + PKG_EXS.QUEUE_PUT(NEXSSERVICEFN => REC.EXSSERVICEFN, + BMSG => REC.MSG_ORIGINAL, + NEXSQUEUE => REC.RN, + NLNK_COMPANY => REC.LNK_COMPANY, + NLNK_DOCUMENT => REC.LNK_DOCUMENT, + SLNK_UNITCODE => REC.LNK_UNITCODE, + SOPTIONS => REC.OPTIONS, + NNEW_EXSQUEUE => NRN_NEW); + end loop; +end; +/