Развитие идей и приложений реляционной СУБД System R


Трансляция запросов и поддержка времени выполнения - часть 3


После обработки текста программы прекомпилятором SQL и компилятором PL/1 производится набор объектных модулей, компоновка которых дает рабочую программу, при выполнении которой будут выполнены и те запросы, которые встретятся в потоке управления программы. Это очень грубая схема, которая тем не менее соответствует представлениям пользователей. Далее мы детализируем ее.

Второй вид интерфейса, поддерживаемого System R, - интерактивный. При работе с этим интерфейсом пользователи используют базовое "реляционное" подмножество SQL, в котором запрещено использование средств, предназначенных для стыковки с традиционным языком программирования (в частности, запрещено использование аппарата курсоров). Результатами выполнения запросов пользователей являются таблицы-отношения, которые и отображаются на экранах терминалов. Естественно, что средства интерактивного взаимодействия включают редактор, облегчающий формулирование запросов, и компонент, позволяющий описывать

- 58 форматы таблиц при изображении их на экране. Нас эти особенности в этой статье занимать не будут. Здесь для нас более интересно то, что интерактивный интерфейс реализуется на основе использования интерфейса первого рода.

На самом деле, программа, обеспечивающая интерактивный интерфейс с System R, строится как и любая другая программа, включающая предложения SQL. Возможности обеспечения интерактивного режима, когда заранее неизвестен набор запросов, которые поступят с терминала, обеспечиваются двумя операторами SQL, позволяющими динамически откомпилировать и выполнить запрос. Параметром предложения SQL PREPARE является текстовая строка, которая должна содержать текст предложения SQL, допустимый для использования в интерактивном режиме. Оператор PREPARE - выполняемый. При его выполнении производится компиляция задаваемого предложения SQL, и после его выполнения можно выполнить динамически появляющуюся рабочую программу выполнения запроса с помощью оператора EXECUTE. (Мы опускаем некоторые детали; например, после выполнения оператора PREPARE можно узнать тип компилировавшегося запроса, т.е.


Начало  Назад  Вперед



Книжный магазин