Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Стат&Динам_SQL.doc
Скачиваний:
5
Добавлен:
18.11.2018
Размер:
165.89 Кб
Скачать

Основная программа

Основной программой, или HOST-программой, называется программа, в которую встраиваются SQL-операторы.

Встраиваемый SQL-оператор указывается после фразы EXEC SQL.

Стандартом SQL-92 предусмотрена возможность встраивания SQL-операторов в следующие языки программирования: C, Pascal, Java (SQLJ), Ada, Cobol, Fortran, PL/1, M.

На следующей схеме изображен процесс выполнения программы, содержащей операторы встроенного SQL.

Рис. 9.1.  Процесс выполнения программы, содержащей операторы встроенного SQL.

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

Таким образом, выполнение SQL-оператора было последовательно заменено на вызов внешней процедуры, которая затем была связана с библиотекой СУБД. Поэтому на этапе выполнения библиотечные вызовы будут передаваться непосредственно СУБД.

При выполнении программы со встроенным SQL могут быть использованы привилегии как выполняющего, так и владеющего пользователя (того, кто создал выполнимый файл). В современных коммерческих СУБД, как правило, относительно хранимых в базе данных модулей, существует возможность назначения привилегии EXECUTE таким образом, чтобы при выполнении модуля использовались привилегии его владельца.

Переменные во встроенном sql

Во встроенном SQL можно использовать переменные основного языка программирования. Они применяются:

  • в выражениях;

  • как INTO-переменные;

  • как переменные связи (bind-переменные);

  • как индикаторные переменные.

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

Перед тем как использовать такую переменную, она должна быть объявлена в разделе объявления SQL-переменных. Объявление SQL-переменных указывается между парой операторов EXEC SQL BEGIN DECLARE SECTION; и EXEC SQL END DECLARE SECTION;

В основной программе может быть произвольное число разделов с объявляемыми переменными, но они могут быть указаны только в тех местах, в которых синтаксис основного языка допускает выполнять объявление переменных. Внутри операторов EXEC SQL BEGIN DECLARE SECTION и EXEC SQL END DECLARE SECTION синтаксис объявления переменных также соответствует языку программирования, в который встраиваются SQL-операторы.

Например:

// Код для объявления переменных на языке С++:

EXEC SQL BEGIN DECLARE SECTION;

int var1;

int var2;

char var3[10];

EXEC SQL END DECLARE SECTION;

// Код для объявления переменных на

// языке Pascal:

EXEC SQL BEGIN DECLARE SECTION var

var1: integer;

var2: integer;

var3: array (1..10) of char;

EXEC SQL END DECLARE SECTION;