Перейти к основному содержимому

Пакетный запрос

Несколько операторов можно объединить в пакет — разделителем в тексте является символ ; (точка с запятой).

ВЫБРАТЬ
ОбработанныеСообщения.КодУчастника КАК КодУчастника,
ОбработанныеСообщения.ИмяПроцесса КАК ИмяПроцесса,
ОбработанныеСообщения.ИмяУзла КАК ИмяУзла
ПОМЕСТИТЬ
ВременнаяТаблица
ИЗ
ОбработанныеСообщения КАК ОбработанныеСообщения
ИНДЕКСИРОВАТЬ ПО
КодУчастника
;
ВЫБРАТЬ
ВременнаяТаблица.ИмяПроцесса КАК ИмяПроцесса
ИЗ
ВременнаяТаблица КАК ВременнаяТаблица
ГДЕ
ВременнаяТаблица.ИмяПроцесса == "Обмен"

Запросы в пакете выполняются последовательно, если это были запросы изменения данных или структуры, никаких усилий для их атомарного выполнения не предпринимается. То есть вполне возможна ситуация, когда часть запросов пакета выполнится, а часть нет (из-за ошибки). Если требуется атомарность, то нужно открывать транзакцию.

Результатом пакетного запроса является результат последнего запроса пакета.

Если при выполнении пакетного запроса не установлена область видимости временных таблиц — перед выполнением первого запроса автоматически создается область видимости временных таблиц, используется для выполнения всех запросов пакета, и по окончании выполнения последнего запроса пакета (или при возникновении ошибки) она закрывается.