ЛАБОРАТОРНАЯ РАБОТА 6

ДИНАМИЧЕСКИЙ SQL

Цель работы

Приобретение практических навыков работы со средствами динамического SQL при написании программ на ESQL/C.

Содержание работы и методические указания

к ее выполнению

С помощью динамического SQL программа-клиент выполняет программное формирование оператора SQL для его последующего исполнения, делая это в три этапа:

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

Оператор Prepare создает структуру данных, имеющую имя и отображающую строку символов с текстом оператора SQL.

Подготовленный по оператору Prepare динамический оператор (группу операторов) можно многократно выполнять. С помощью оператора Execute выполняются операторы, отличные от операторов Select, а также операторы Select, которые возвращают в качестве результата одну строку. Если оператор Select возвращает более одной строки, динамический оператор Select выполняется не с помощью оператора Execute, а подключается к курсору и в дальнейшем используется обычным образом с помощью курсорных средств. В обоих случаях при выполнении динамического оператора с помощью спецификатора Using ему передаются главные переменные, участвующие в выражениях и принимающие возвращаемые значения и, по сути, играющие роль фактических параметров. Как ограничение, следует отметить, что знак вопроса нельзя использовать вместо идентификаторов SQL, таких как имя базы данных, таблицы или столбца: эти идентификаторы должны указываться в тексте оператора при его подготовке, возможно, как полученные из пользовательского ввода.

Последовательность выполнения лабораторной работы:

  1. Изучить синтаксис и правила использования операторов Prepare, Execute (см. Приложение 2), а также особенности работы с курсором при выполнении динамического оператора SQL.
  2. Разработать и отладить набор ESQL/С-программ, решающих задачи из соответствующего варианта заданий. Результатом работы программ является одна или несколько строк, которые подлежат выводу на экран с соответствующими пояснительными заголовками.

Требования к разрабатываемой программе

Разрабатываемые ESQL/C-программы должна удовлетворять следующим требованиям:

Варианты заданий

Вариант 1.

1. Выдать полную информацию о поставщике, имеющим максимальный рейтинг.

2. Получить номера изделий, для которых детали полностью поставляет поставщик с указанным номером (параметр - номер поставщика (S1)).

3. Выдать номера и фамилии поставщиков, поставляющих детали для какого-либо изделия с деталью, номер которой указывается, в количестве, большем, чем средний объем поставок данной детали для этого изделия (параметр - номер детали (P1)).

Вариант 2.

1. Выдать полную информацию об изделии, изготавливаемом в городе, в котором проживает поставщик с максимальным рейтингом.

2. Получить общее количество деталей с указанным номером, поставляемых некоторым поставщиком (параметры - номер детали (P1), номер поставщика (S1)).

3. Выдать номера изделий, использующих только детали, поставляемые некоторым поставщиком (параметр - номер поставщика (S1)).

Вариант 3.

1. Выдать полную информацию о детали, имеющей максимальный вес.

2. Получить общее число изделий, для которых поставляет детали поставщик с указанным номером (параметр - номер поставщика (S1)).

3. Выдать номера изделий, детали для которых поставляет каждый поставщик, поставляющий какую-либо деталь указанного цвета (параметр - цвет детали (красный)).

Вариант 4.

1. Выдать общий объем поставок деталей красного цвет.

2. Получить полный список деталей для всех изделий, изготавливаемых в некотором городе (параметр - название города (Лондон)).

3. Выдать номера деталей, поставляемых каким-либо поставщиком из указанного города (параметр - название города (Лондон)).

Вариант 5.

1. Выдать полную информацию об изделии, имеющем максимальный объем поставок деталей (с использованием оператора.

2. Получить список всех поставок, в которых количество деталей находится в некотором диапазоне (параметры - границы диапазона (от 300 до 750)) .

3. Выдать номера и названия деталей, поставляемых для какого-либо изделия из указанного города (параметр - название города (Лондон)).

Вариант 6.

1. Выдать общий объем поставок деталей для изделия J2.

2. Получить цвета деталей, поставляемых некоторым поставщиком (параметр - номер поставщика (S1)).

3. Выдать номера и фамилии поставщиков, поставляющих некоторую деталь для какого-либо изделия в количестве, большем среднего объема поставок данной детали для этого изделия (параметр - номер детали (P1)).

Вариант 7.

1. Выдать общий объем поставок деталей для изделия с максимальным объемом поставок.

2. Получить названия изделий, для которых поставляются детали некоторым поставщиком (параметр - номер поставщика (S1)).

3. Выдать номера изделий, для которых средний объем поставки некоторой детали больше максимального объема поставки любой детали для указанного изделия (параметры - номер детали (P1), номер изделия (J1)).

Контрольные вопросы

  1. Каково назначение и синтаксис оператора Prepare?
  2. Каково назначение и синтаксис оператора Execute?
  3. Каковы особенности использования динамических операторов SQL?
  4. Что такое динамические главные переменные? Для чего они используются?
  5. С какими операторами связано использование динамических главных переменных?
  6. Каково назначение оператора Execute Immediate?