DEPO: установка процедур bj2depo из bj (проверка возможностей + применение)
Процедуры FTV_M2M_PROCESS_* и FTV_M2M_JOB встроены в bj (depoprocs/*.sql). В разделе «Учёт DEPO» карточка «Процедуры обработки bj2depo»: - «Проверить возможности» — подключение, это ли база DEPO, какие процедуры установлены, есть ли право CREATE PROCEDURE и логин bj в базе (ничего не меняет); - «Установить» — логином администратора SQL (разово, не сохраняется) выполняет CREATE OR ALTER в порядке WIRING→OPERATION→EVENTS→CREATE→JOB и GRANT EXECUTE на FTV_M2M_JOB логину bj; без прав — отказ без изменений; - скачивание единого скрипта для ручной установки в SSMS. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
CREATE OR ALTER procedure [dbo].[FTV_M2M_JOB]
|
||||
|
||||
as
|
||||
set nocount on;
|
||||
|
||||
declare
|
||||
@ID int,
|
||||
@STATE varchar(64);
|
||||
|
||||
declare
|
||||
@ERROR_NUMBER int,
|
||||
@COMMENT varchar(MAX);
|
||||
|
||||
--Новые поручения
|
||||
declare cur cursor local fast_forward read_only for select ID from FTV_M2M M where M.STATE = 'TODO' order by M.TimeNew;
|
||||
|
||||
open cur;
|
||||
while 0 = 0 begin fetch next from cur into @ID;
|
||||
if @@FETCH_STATUS <> 0 break;
|
||||
|
||||
--Тут можно отправить уведомление, создать входящее сообщение и т.д.
|
||||
update FTV_M2M set TimeBeg = GETDATE() where ID = @ID;
|
||||
|
||||
--Главный процесс
|
||||
begin try
|
||||
exec FTV_M2M_PROCESS_CREATE @ID;
|
||||
set @STATE = 'SUCCESS';
|
||||
end try
|
||||
begin catch
|
||||
set @ERROR_NUMBER = ERROR_NUMBER();
|
||||
set @COMMENT = ERROR_MESSAGE() + ' // ' + ERROR_PROCEDURE() + ' // ' + trim(str(ERROR_LINE()));
|
||||
set @STATE = 'ERROR'
|
||||
end catch
|
||||
|
||||
--Тут можно уведомить об ошибочном статусе
|
||||
update FTV_M2M set STATE = @STATE, TimeEnd = GETDATE(), COMMENT = @COMMENT where ID = @ID;
|
||||
|
||||
end;
|
||||
close cur;
|
||||
deallocate cur;
|
||||
|
||||
|
||||
--Новые события
|
||||
declare cur cursor local fast_forward read_only for select ID from FTV_M2M_EVENTS ME where ME.STATE = 'TODO' order by ME.TimeNew;
|
||||
|
||||
open cur;
|
||||
while 0 = 0 begin fetch next from cur into @ID;
|
||||
if @@FETCH_STATUS <> 0 break;
|
||||
|
||||
--Тут можно отправить уведомление, создать входящее сообщение и т.д.
|
||||
update FTV_M2M_EVENTS set TimeBeg = GETDATE() where ID = @ID;
|
||||
|
||||
--Процесс изменения событий
|
||||
begin try
|
||||
exec FTV_M2M_PROCESS_EVENTS @ID;
|
||||
set @STATE = 'SUCCESS';
|
||||
end try
|
||||
begin catch
|
||||
set @ERROR_NUMBER = ERROR_NUMBER();
|
||||
set @COMMENT = ERROR_MESSAGE() + ' // ' + ERROR_PROCEDURE() + ' // ' + trim(str(ERROR_LINE()));
|
||||
set @STATE = 'ERROR'
|
||||
end catch
|
||||
|
||||
--Тут можно уведомить об ошибочном статусе
|
||||
update FTV_M2M_EVENTS set STATE = @STATE, TimeEnd = GETDATE(), COMMENT = @COMMENT where ID = @ID;
|
||||
|
||||
end;
|
||||
close cur;
|
||||
deallocate cur;
|
||||
|
||||
/* тестовый блок удалён при переносе в репозиторий */
|
||||
Reference in New Issue
Block a user