РЕАЛИЗАЦИЯ ПРОСТЕЙШИХ ОПЕРАЦИЙ РАБОТЫ С БАЗОЙ ДАННЫХ СРЕДСТВАМИ ВСТРОЕННОГО SQL
ЛАБОРАТОРНАЯ РАБОТА 4
РЕАЛИЗАЦИЯ ПРОСТЕЙШИХ ОПЕРАЦИЙ РАБОТЫ С БАЗОЙ ДАННЫХ СРЕДСТВАМИ ВСТРОЕННОГО SQL
Цель работы
Приобретение начальных навыков работы со встроенным SQL средствами Informix-ESQL/C.
Содержание работы и методические указания к ее выполнению
Informix-ESQL/C - инструмент разработки приложений для базы данных на языке Си с возможностью использования средств SQL. При создании ESQL/C-программы пользователь разрабатывает С-программу, включает в нее специальные заголовочные файлы и SQL-описания, реализующие работу с базой данных. Препроцессор ESQL/C преобразует SQL-описания в обращения к библиотечным функциям, которые взаимодействуют с сервером базы данных, и дает на выходе С-код. Далее полученный С-код компилируется и линкуется. Исходя из вышесказанного, пользователь, желающий разрабатывать ESQL/С-программы должен обладать навыками работы с языком Си и уметь пользоваться средствами SQL. При этом необходимо учитывать особенности той операционной системы, в рамках которой создается клиентское приложение. В данной и двух последующих лабораторных работах предполагается разработка несложных ESQL/С-программ. В лабораторных работах используется база данных, содержащая 4 таблицы:
Если приведенная база данных отсутствует (или любая таблица из нее), то необходимо восстановить базу данных, пользуясь интерактивными средствами программы Informix-SQL, либо выполнив необходимый запрос на языке SQL в рамках данной программы:
create database Postavka with buffered log;
create table S (n_post char(6) NOT NULL, family nchar(20),
rating smallint, town nchar(20));
create table P (n_det char(6), name nchar(20),
color nchar(20), weigh smallint,
town nchar(20));
create table J (n_izd char(6), name nchar(20),
town nchar(20));
create table SPJ (n_post char(6), n_det char(6),
n_izd char(6), kol smallint));
insert into S
values (...........................);
insert into P
values (...........................);
insert into J
values (...........................);
insert into SPJ
values (...........................)
Для разработки ESQL/С-программ необходимо изучить:
Данная лабораторная работа связана с написанием таких программ на ESQL/C, которые после обработки SQL-запроса возвращают единственную строку, а также выполняют простейшие операции по модификации базы данных без использования аппарата курсора.
Исходный файл с программой на Informix-ESQL/C должен иметь расширение .ec (например, source.ec).
Вызов Informix-ESQL/C выполняется командой esql. Ниже приведен упрощенный вариант синтаксиса команды esql. Приведенные в диаграмме обозначения имеют смысл:
source.ec - имя исходного модуля;
outfile - имя создаваемого выполняемого модуля;
Compiling/ /Linking Options - опции компилятора/редактора;
- e - выполнить только препроцессорную обработку с получением на выходе программы на языке Си (source.c);
-V - получить информацию о версии Informix-ESQL/C;
otherCsrc.c - другие исходные модули, подлежащие включению в программу;
otherCobj.o - другие объектные модули, подлежащие включению в программу;
yourlib.a - другие библиотеки, используемые для построения программы на.
Входные данных для SQL-описаний передаются через так называемые главные переменные, через них же возвращаются результаты запроса, которые отображаются на экране терминала для контроля выполнения. При объявлении главных переменных в языке Informix-ESQL/C оператору описания переменных предшествует знак $, либо объявление производится внутри блока
exec SQL begin declare section
. . . .
exec SQL end declare section
При использовании главных переменных в программе на Informix-ESQL/C внутри SQL-описаний им также предшествует знак $, вне SQL-описаний главные переменные используются обычным образом.
SQL-описаниям (операторам языка SQL) в программе на языке Informix-ESQL/C также предшествует знак $.
Сервер баз данных возвращает код результата и, возможно, другую информацию в структуру данных, называемую областью связи SQL (SQL Communication Area - SQLCA). Структура и назначение отдельных полей SQLCA приведены в Приложении 3. Структура SQLCA описана в заголовочном файле sqlca.h, который автоматически подключается к программе на Informix-ESQL/C. Среди других заголовочных файлов отметим:
datatime.h - описывает структуру для типа данных datetime;
decimal.h - описывает структуру для типа данных decimal;
locator.h - описывает структуру для blobs-данных;
varchar.h - описывает структуру для типа данных varchar;
sqlhdr.h - описывает прототипы функций библиотеки Informix-ESQL/C;
sqltype.h, sqltypes.h - структуры для работа с динамическими главными переменными.
Последовательность выполнения лабораторной работы
1. Разработать и отладить ESQL/С-программу, реализующую задачу 1 из соответствующего варианта заданий.
2. Разработать и отладить ESQL/С-программу, реализующую задачу 2 из соответствующего варианта заданий и связанную с модификацией базы данных.
3. Разработать и отладить ESQL/С-программу, добавляющую в таблицу поставщиков S поставщика с фамилией члена Вашей бригады, а также 3-4 произвольные поставки в таблицу SPJ, связанные с этим поставщиком. Атрибуты добавляемых строк должны быть выбраны таким образом, чтобы изменить результат решения задачи 1.
4. Выполнить ESQL/С-программу, разработанную в п. 1 для нового состояния базы данных. Сравнить результаты.
В случае ошибочного выполнения программ, приводящих к непредусмотренным изменениям базы данных, следует привести базу данных в исходное состояние.
Требования к разрабатываемой программе
Разрабатываемые ESQL/C-программы должны удовлетворять следующим требованиям:
Варианты заданий
Вариант 1
1. Выдать полную информацию о поставщике, имеющим максимальный рейтинг.
2. Перевести поставщика с минимальным рейтингом в город, где изготавливается самая тяжелая деталь.
Вариант 2
1. Выдать полную информацию об изделии, изготавливаемом в городе, в котором проживает поставщик с максимальным рейтингом.
2. Поменять местами города, где проживают поставщики с минимальным и максимальным рейтингом.
Вариант 3
1. Выдать полную информацию о детали, имеющей максимальный вес.
2. Перевести поставщика с максимальным рейтингом в Лондон.
Вариант 4
1. Выдать общий объем поставок деталей красного цвета.
2. В таблице деталей сменить название детали "Винт" на название детали с максимальным весом.
Вариант 5
1. Выдать полную информацию об изделии, имеющем максимальный объем поставок деталей.
2. В таблице деталей сменить город, где изготавливается самая легкая деталь, на Париж.
Вариант 6
1. Выдать общий объем поставок деталей для изделия J2.
2. Увеличить рейтинг всех лондонских поставщиков на 5.
Вариант 7
1. Выдать общий объем поставок деталей для изделия с максимальным объемом поставок.
2. Увеличить вес всех красных деталей на 10.
Контрольные вопросы