Базы данных - модели, разработка, реализация


Динамический SQL - часть 2


  • EXECUTE IMMEDIATE
  • Базовая переменная содержит текст SQL оператора.

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

Прежде всего было предложено разделить выполнение SQL - оператора в динамическом SQL на два отдельных этапа. Первый этап называется подготовительным, он фактически включает 4 первых этапа выполнения SQL - операторов, рассмотренные нами ранее: синтаксический и семантический анализ, построение и оптимизация плана выполнения оператора.

Этот этап выполняется оператором PREPARE, синтаксис которого приведен ниже:

  • PREPARE FROM
  • - это идентификатор базового языка.

Далее на втором этане этот определенный на первом этапе оператор может быть выполнен операцией EXECUTE, которая имеет синтаксис:

  • EXECUTE USING { |
  • DESCRIPTOR }

Здесь DESCRIPTOR - это некоторая структура, которая описывается на клиенте, но создается и управляется сервером. Дескриптор представляет совокупность элементов данных, принадлежащих СУБД. Программное обеспечение СУБД должно содержать и поддерживать набор операций над дескрипторами. Эта структура была введена в стандарт SQL2 для типизации динамического SQL.

В стандарт SQL2 введены следующие операции над дескрипторами:

  • ALLOCATE DESCRIPTOR [WITH МАХ ] - оператор связывает имя дескриптора с числом его базовых элементов и обеспечивает выделение памяти под данный дескриптор.
  • DEALLOCATE DESCRIPTOR - оператор освобождает разделяемую память СУБД, занятую хранением описания данного дескриптора. После выполнения данного оператора невозможно обратиться к дескриптору ни с одной операцией.
  • SET DESCRIPTOR {COUNT = | VALUE (= [...]}} - оператор занесения в дескриптор описания передаваемых параметров. Описания передаются СУБД, которая их обрабатывает, внося соответствующие изменения в область данных, отведенную под дескриптор.



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



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