Навигация:  Администрирование > Сценарии > Редактор сценариев > Компоненты >

SQL запрос

Previous pageReturn to chapter overviewNext page

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

clip0011_SQLQuery

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

Примеры подключения баз данных приведены в разделе "Интеграция / Интеграция с базами данных" настоящей документации.

clip0060

 

Свойства компонента:

Компонент "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 запрос" автоматически появляются входные и выходные параметры запроса

clip0062

На рисунке видим один входной (желтая стрелка) и семь выходных (зеленая стрелка) параметров. Каждый входной параметр можно задать в виде константы, функции или переменной через редактор выражений. А для каждого выходного параметра задается переменная, которая примет значение параметра после успешного выполнения запроса. Назначение переменных выходным параметрам осуществляется через редактор выражений.

Пример использования SQL запроса приведен в сценарии "Правильное голосовое приветствие"

Из компонента ведут три перехода:

-ОК - переход в случае успешного выполнения запроса;
-Ошибка – если в процессе выполнения запроса произошла ошибка;
-Таймаут – если SQL запрос не был выполнен за указанное время.