Задать вопрос
@alex_terekhov

Что выполняет данный SQL скрипт?

Добрый день!
Подскажите пожалуйста что выполняет данный скрипт?
update [dbo].[dvsys_instances]
set ArchiveState = 2
Where InstanceID in
(
SELECT ID
FROM(
Select
Inst.InstanceID [ID]
,case
when [Inst].CardTypeID = '2E729D50-6B61-4186-9D14-44E109FD920B' then 'ID'
when [Inst].CardTypeID = '816AE98F-0E9C-4734-B368-642A34948527' then 'SZ'
when [Inst].CardTypeID = '094DEF0A-2CA1-41D8-81B6-70F586FDDE56' then 'VD'
end [Type]
,case
when [Inst].CardTypeID = '2E729D50-6B61-4186-9D14-44E109FD920B' then MainID.[State]
when [Inst].CardTypeID = '816AE98F-0E9C-4734-B368-642A34948527' then MainSZ.[State]
when [Inst].CardTypeID = '094DEF0A-2CA1-41D8-81B6-70F586FDDE56' then MainVD.[State]
end [State]

From [dbo].[dvsys_instances] [Inst]
left join [dbo].[dvsys_instances_date] [IDate]
on Inst.InstanceID = IDate.InstanceID
left join [dbo].[dvtable_{4C07CA25-41D6-438A-B73E-47FE7650C7BD}] MainID
on Inst.InstanceID = MainID.InstanceID
left join [dbo].[dvtable_{B5D96F96-ACA2-4184-9702-2D89B1B3936A}] MainSZ
on Inst.InstanceID = MainSZ.InstanceID
left join [dbo].[dvtable_{C06228B9-99F8-4B41-950B-8FACDC00A2B7}] MainVD
on Inst.InstanceID = MainVD.InstanceID

Where [Inst].CardTypeID in('2E729D50-6B61-4186-9D14-44E109FD920B', '816AE98F-0E9C-4734-B368-642A34948527', '094DEF0A-2CA1-41D8-81B6-70F586FDDE56')
and IDate.CreationDateTime < (GETDATE() - 724)
)T1
WHERE (T1.[Type] = 'ID' and T1.[State] in (5,9))
or(T1.[Type] = 'SZ' and T1.[State] in (4,6,9))
or(T1.[Type] = 'VD' and T1.[State] in (5,6))
)
EXEC [dbo].[dvsys_archive_cards]
Есть база данный DocsVision, и этот скрипт должен архивировать различные типы документов в архивные таблицы, но что-то не получается
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Оператор update только выставляет в таблице dvsys_instances поле ArchiveState в значение 2 для отобранных записей. Весь текст запроса - это собственно фильтр для отбора записей.
В последней строке вызывается хранимая процедура dvsys_archive_cards.
Предполагаю, что эта процедура должна производить архивацию записей, у которых ArchiveState=2.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы