Компонент "SQL запрос" предназначен для осуществления SQL-запросов как во внутреннюю базу данных «Infinity Call-центр X», так и во внешние СУБД посредством технологии ADO/ODBC.

Все внешние базы данных к которым необходим доступ из сценариев и из других служб «Infinity Call-центр X» описываются в разделе "Базы данных" администрирования комплекса.
Примеры подключения баз данных приведены в разделе "Интеграция / Интеграция с базами данных" настоящей документации.

Свойства компонента:
Компонент "SQL запрос" относится к компонентам с непостоянным количеством наборов параметров. Часть параметров статические – указание на базу данных, тело запроса, таймаут, а часть параметров динамические и изменяются в зависимости от параметров самого запроса. К динамическим параметрам относятся параметры, которые используются в самом запросе – это входные переменные для запроса и выходные переменные.
Статические параметры:
| - | База данных - указание конкретной базы данных из перечня описанных в «Infinity Call-центр X» баз данных, выбирается из выпадающего списка; |
При описании базы данных указывается механизм доступа и параметры учетной записи от имени которой происходит доступ.
| - | SQL Запрос – тело SQL запроса к базе данных; |
1. Входные параметры запроса (переменные), которые должны быть переданы в тело запроса, обозначаются знаком двоеточия в начале. Например: в запросе "Select MyA, MyB from MyTable where MyC=:VarC" используется переменная "VarC", которая будет являться входным параметром к запросу. Все выходными параметрами запроса будут MyA и MyB.
2. Если результирующий набор данных возвращает более одной строки, то в выходные параметры попадут значения, полученные в первой строки выборки.
| - | Таймаут (сек) – Интервал в времени в секундах в течении которого ожидается ответ на запрос. Задается через редактор выражений и может быть указано явно как константа или задано числовой переменной; |
Если таймаут установлен в 0, то выполнение запроса будет длится до тех пор, пока не будет получен ответ от СУБД.
Динамические параметры:
Рассмотрим использование динамических параметров на примере запроса во внешнюю базу данных. Рассмотрим простейший SQL запрос во внешнюю базу данных, которая определена в «Infinity Call-центр X» как "Client_DB_MSSQL", выбирающий строку из таблицы tbClients запросом:
SELECT [id],[cName],[cManager],[cPhone],[cManagerPhone],[cManagerMobile],[cCategory]
FROM [Client_DB].[dbo].[tbClients] where [cPhone] = :phone
В запрос возвращает 7 параметров [id],[cName],[cManager],[cPhone],[cManagerPhone],[cManagerMobile],[cCategory] из таблицы для которых поле [cPhone] совпадает с параметром запроса :phone.
При проверке запроса в конструкторе в компоненте "SQL запрос" автоматически появляются входные и выходные параметры запроса

На рисунке видим один входной (желтая стрелка) и семь выходных (зеленая стрелка) параметров. Каждый входной параметр можно задать в виде константы, функции или переменной через редактор выражений. А для каждого выходного параметра задается переменная, которая примет значение параметра после успешного выполнения запроса. Назначение переменных выходным параметрам осуществляется через редактор выражений.
Пример использования SQL запроса приведен в сценарии "Правильное голосовое приветствие"
Из компонента ведут три перехода:
| - | ОК - переход в случае успешного выполнения запроса; |
| - | Ошибка – если в процессе выполнения запроса произошла ошибка; |
| - | Таймаут – если SQL запрос не был выполнен за указанное время. |