Работа с запросами во встроенном языке
Пример создания, выполнения запроса и обработки его результатов во встроенном языке может выглядеть следующим образом:
// Установить значения параметров запроса.
знч ИмяПроцесса = "Обмен"
// Задать текст запроса.
знч Запрос = Запрос{
ВЫБРАТЬ
ОбработанныеСообщения.КодУчастника КАК КодУчастника,
ОбработанныеСообщения.ИмяУзла КАК ИмяУзла
ИЗ
ОбработанныеСообщения КАК ОбработанныеСообщения
ГДЕ
ОбработанныеСообщения.ИмяПроцесса == %ИмяПроцесса
}
// Обойти результат запроса и обработать е го.
для СтрокаРезультата из Запрос.Выполнить()
пер КодУчастника = СтрокаРезультата.КодУчастника
пер ИмяУзла = СтрокаРезультата.ИмяУзла
;
Литерал или произвольный запрос
Для создания запроса можно использовать два способа:
- Литерал запроса (рекомендуемый),
- Произвольный запрос.
Использование литерала запроса является предпочтительным, потому что в этом случае контроль типов колонок результата запроса выполняется на этапе компиляции, что сокращает количество потенциальных ошибок.
Однако есть случаи, когда литерал не подходит и нужно использовать произвольный запрос. Например, если текст запроса формируется динамически, сложным алгоритмом. В этом случае компилятор ничего не знает о тексте запроса. Для него это просто строка, причем какая именно строка будет использована для доступа к базе данных, станет известно только во время работы приложения. По этой причине на этапе компиляции тип колонок запроса определить невозможно и все ошибки, связанные с этим, будут обнаружены только во время работы.
В первом и во втором случае используются разные типы встроенного языка и поэтому результаты запроса нужно обрабатывать разным образом.
Ограничение: в литерале запроса нельзя использовать запрос вида ВЫБРАТЬ * ИЗ ЖурналСобытий