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


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


Каждый вызов такой операции, соответствующий операции Fetch <идентификатор курсора> приводит к занесению в указанные переменные программы значений полей очередного кортежа результата. Такой покортежный просмотр результирующего отношения запроса прекращается либо при исчерпании результата, либо при вызове в секции операции Closecall, соответстующем операции SQL Close <идентификатор курсора>. В любом случае выполнение операции Close требуется перед повторным использованием секции, начиная с операции Open.

При выполнении операции Describecall в секциях, соотвествующих запросам на выборку, вырабатывается описание результирующего отношения запроса, содержащее для каждого поля этого отношения его имя (если оно у него есть; в результирующем списке запроса могут указываться не только имена полей, но и выражения) и тип. Естественно, что для запросов, обрабатываемых в период прекомпиляции, эта операция не требуется, поскольку вырабатываемая информация доступна в статике. Однако, эта операция необходима при выполнении динамически компилируемых запросов. Например, при использовании SQL в интерактивном режиме операция Describecall позволяет правильно отформатировать результат запроса на экране дисплея, не заставляя специальным образом анализировать введенный запрос.

Наконец, использование операции Setupcall в секциях этого рода допустимо (как и раньше) только для секций, которые были образованы динамически при выполнении операции PREPARE.

Если секция модуля доступа образована при обработке прекомпилятором предложения SQL PREPARE, то в ней доступна только операция Setupcall, которая производит в виртуальной памяти первый готовый к выполнению вариант этой секции (т.е. вариант не типа Indefsect).

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


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



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