Прямой SQL Назад В начало Вперед

Операторы работы с БД, описанные в предыдущих разделах, компилируются во внутренний бинарный код, а потом на этапе выполнения обрабатываются ядром Атлантиса, и через специальный драйвер БД отправляются в виде строковых запросов на конкретный SQL-сервер.

Помимо вышеописанного способа Атлантис обеспечивает прямой доступ к SQL-серверам (DSQL). При этом текст запроса передается на SQL-сервер с минимальными изменениями:

Вся оптимизация запроса, подбор индекса, и т.д. осуществляется на SQL-сервере. Для увеличения производительности системы предусмотрены дополнения стандартного синтаксиса - хинты. Хинты могут не поддерживаться на некоторых платформах.

Операторы прямого доступа к SQL-серверам основаны на стандарте языка SQL/92. В Атлантис реализовано подмножество SQL/92, совместимое с поддерживаемыми SQL-серверами. Поскольку выбранные платформы достаточно прилично отличаются как по синтаксису, так и по функциональным возможностям, реализуемый синтаксис был максимально приближен к стандарту, а функциональное наполнение соответствует пересечению такового на поддерживаемых платформах.

Начиная с Атлантис 5.4.22 в транслятор прямого SQL добавлена проверка возможности в текущей СУБД использовать в функциях вызовы процедур и код, модифицирующий данные БД. В случае невозможности выдаётся сообщение: "СУБД запрещает использовать операторы модификации в ...".

Для проверки возможности использовать в текущей СУБД некоторые потенциально непереносимые конструкции предназначена функция sqlDBMSBoolInfo.

В текущей реализации прямой SQL не работает с транзакциями, соответствующие синтаксические конструкции SQL не доступны. Для работы с транзакциями в DSQL можно использовать имеющиеся методы VIP BeginTransaction, EndTransaction, AbortTransaction (см. раздел "Транзакции. ").

При этом на Oracle и MS SQL Server допускается "перемешивание" механизма доступа к одним и тем же данным в рамках одной транзакции в пределах одного алгоритма через прямой SQL и через классический интерфейс. Все будет работать корректно.

Однако на Pervasive SQL доступ через прямой SQL и доступ через классический интерфейс идет через разные коннекты (разные сервисы). В результате доступ через разные механизмы к одним и тем же данным будет приводить к взаимной блокировке.

Необходимо учитывать эти особенности при разработке алгоритмов со смешанным типом доступа к данным.

Перечень реализованных конструкций языка SQL и их краткое описание приведены в разделе "Операторы прямого SQL. ".

Подробности можно найти в соответствующей литературе. Например, в книге "Справочное руководство по SQL" Мартин Грабер, "Лори" 1997.

Запросы передаются на SQL-сервер через функциональный интерфейс ("Функциональный интерфейс к прямому SQL. ") или посредством оператора SQL языка VIP ("Встроенный прямой SQL. ").

Версия

Начиная с Атлантис 5.4.23 транслируемый в СУБД код полностью контролируется. Неизвестные идентификаторы заменяются на NULL.

Начиная с Атлантис 5.4.22 добавлена проверка возможности в текущей СУБД использовать в функциях вызовы процедур и код, модифицирующий данные БД.

Начиная с Атлантис 5.2.07.

Оглавление раздела

Операторы прямого SQL

Константы прямого SQL

Функции прямого SQL

Хранимые процедуры и функции

Функциональный интерфейс к прямому SQL

Временные пользовательские таблицы в прямом SQL

Встроенный прямой SQL