ДИНАМИЧЕСКИЙ SQL
ЛАБОРАТОРНАЯ РАБОТА 6
ДИНАМИЧЕСКИЙ SQL
Цель работы
Приобретение практических навыков работы со средствами динамического SQL при написании программ на ESQL/C.
Содержание работы и методические указания
к ее выполнению
С помощью динамического SQL программа-клиент выполняет программное формирование оператора SQL для его последующего исполнения, делая это в три этапа:
Динамический оператор SQL по форме напоминает любой другой оператор SQL, записанный в программе, с тем ограничением, что он не может содержать имена главных переменных. Поэтому
Оператор Prepare создает структуру данных, имеющую имя и отображающую строку символов с текстом оператора SQL.
Подготовленный по оператору Prepare динамический оператор (группу операторов) можно многократно выполнять. С помощью оператора Execute выполняются операторы, отличные от операторов Select, а также операторы Select, которые возвращают в качестве результата одну строку. Если оператор Select возвращает более одной строки, динамический оператор Select выполняется не с помощью оператора Execute, а подключается к курсору и в дальнейшем используется обычным образом с помощью курсорных средств. В обоих случаях при выполнении динамического оператора с помощью спецификатора Using ему передаются главные переменные, участвующие в выражениях и принимающие возвращаемые значения и, по сути, играющие роль фактических параметров. Как ограничение, следует отметить, что знак вопроса нельзя использовать вместо идентификаторов SQL, таких как имя базы данных, таблицы или столбца: эти идентификаторы должны указываться в тексте оператора при его подготовке, возможно, как полученные из пользовательского ввода.
Последовательность выполнения лабораторной работы:
Требования к разрабатываемой программе
Разрабатываемые ESQL/C-программы должна удовлетворять следующим требованиям:
Варианты заданий
Вариант 1.
1. Выдать полную информацию о поставщике, имеющим максимальный рейтинг (с использованием оператора Execute).
2. Получить номера изделий, для которых детали полностью поставляет поставщик с указанным номером (параметр - номер поставщика (S1)).
3. Выдать номера и фамилии поставщиков, поставляющих детали для какого-либо изделия с деталью, номер которой указывается, в количестве, большем, чем средний объем поставок данной детали для этого изделия (параметр - номер детали (P1)).
Вариант 2.
1. Выдать полную информацию об изделии, изготавливаемом в городе, в котором проживает поставщик с максимальным рейтингом (с использованием оператора Execute).
2.
Получить общее количество деталей с указанным номером, поставляемых некоторым поставщиком (параметры - номер детали (P1), номер поставщика (S1)).
3. Выдать номера изделий, использующих только детали, поставляемые некоторым поставщиком (параметр - номер поставщика (S1)).
Вариант 3.
1. Выдать полную информацию о детали, имеющей максимальный вес (с использованием оператора Execute).
2. Получить общее число изделий, для которых поставляет детали поставщик с указанным номером (параметр - номер поставщика (S1)).
3. Выдать номера изделий, детали для которых поставляет каждый поставщик, поставляющий какую-либо деталь указанного цвета (параметр - цвет детали (красный)).
Вариант 4.
1. Выдать общий объем поставок деталей красного цвета (с использованием оператора Execute).
2. Получить полный список деталей для всех изделий, изготавливаемых в некотором городе (параметр - название города (Лондон)).
3. Выдать номера деталей, поставляемых каким-либо поставщиком из указанного города (параметр - название города (Лондон)).
Вариант 5.
1. Выдать полную информацию об изделии, имеющем максимальный объем поставок деталей (с использованием оператора Execute).
2. Получить список всех поставок, в которых количество деталей находится в некотором диапазоне (параметры - границы диапазона (от 300 до 750)) .
3. Выдать номера и названия деталей, поставляемых для какого-либо изделия из указанного города (параметр - название города (Лондон)).
Вариант 6.
1. Выдать общий объем поставок деталей для изделия J2 (с использованием оператора Execute).
2. Получить цвета деталей, поставляемых некоторым поставщиком (параметр - номер поставщика (S1)).
3. Выдать номера и фамилии поставщиков, поставляющих некоторую деталь для какого-либо изделия в количестве, большем среднего объема поставок данной детали для этого изделия (параметр - номер детали (P1)).
Вариант 7.
1. Выдать общий объем поставок деталей для изделия с максимальным объемом поставок (с использованием оператора Execute).
2.Получить названия изделий, для которых поставляются детали некоторым поставщиком (параметр - номер поставщика (S1)).
3. Выдать номера изделий, для которых средний объем поставки некоторой детали больше максимального объема поставки любой детали для указанного изделия (параметры - номер детали (P1), номер изделия (J1)).
Контрольные вопросы