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

РЕАЛИЗАЦИЯ ПРОСТЕЙШИХ ОПЕРАЦИЙ РАБОТЫ С БАЗОЙ ДАННЫХ СРЕДСТВАМИ ВСТРОЕННОГО SQL

Цель работы

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

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

Встроенный SQL (ESQL)- инструмент разработки приложений для базы данных на языке Си с возможностью использования средств SQL. При создании ESQL/C-программы пользователь разрабатывает С-программу, включает в нее специальные заголовочные файлы и SQL-описания, реализующие работу с базой данных. Препроцессор ESQL/C преобразует SQL-описания в обращения к библиотечным функциям, которые взаимодействуют с сервером базы данных, и дает на выходе С-код. Далее полученный С-код компилируется и линкуется. Исходя из вышесказанного, пользователь, желающий разрабатывать ESQL/С-программы должен обладать навыками работы с языком Си и уметь пользоваться средствами SQL. При этом необходимо учитывать особенности той операционной системы, в рамках которой создается клиентское приложение. В данной и двух последующих лабораторных работах предполагается разработка несложных ESQL/С-программ. В лабораторных работах используется схема базы данных, созданная в 1 лабораторной работе, содержащая 4 таблицы:

Если приведенная схема базы данных отсутствует (или любая таблица из нее), то необходимо восстановить базу данных, пользуясь интерактивными средствами программы phpPgAdmin, либо выполнив необходимый запрос на языке SQL в рамках данной программы:

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-запроса возвращают единственную строку, а также выполняют простейшие операции по модификации базы данных без использования аппарата курсора.

Исходный файл с программой на встроенном SQL/C должен иметь расширение .ec (например, source.ec).

Вызов транслятора со встроенного ESQL/C выполняется командой pgcci. Ниже приведен упрощенный вариант синтаксиса команды pgcci:

pgcci <имя файла без расширения>

Входные данных для SQL-описаний передаются через так называемые главные переменные, через них же возвращаются результаты запроса, которые отображаются на экране терминала для контроля выполнения. При объявлении главных переменных в языке встроенного SQL/C оператору описания переменных предшествует знак $, либо объявление производится внутри блока

exec SQL begin declare section

. . . .

exec SQL end declare section

При использовании главных переменных в программе ESQL/C внутри SQL-описаний им также предшествует знак $, вне SQL-описаний главные переменные используются обычным образом. SQL-описаниям (операторам языка SQL) в программе на встроенном SQL/C также предшествует знак $.

Сервер баз данных возвращает код результата и, возможно, другую информацию в структуру данных, называемую областью связи SQL (SQL Communication Area - SQLCA). Структура и назначение отдельных полей SQLCA приведены в Приложении 3. Структура SQLCA описана в заголовочном файле sqlca.h, который автоматически подключается к программе на встроенном SQL/C. Среди других заголовочных файлов отметим:

datatime.h - описывает структуру для типа данных datetime;

decimal.h - описывает структуру для типа данных decimal;

locator.h - описывает структуру для blobs-данных;

varchar.h - описывает структуру для типа данных varchar;

sqlhdr.h - описывает прототипы функций библиотеки SQL/C;

sqltype.h, sqltypes.h - структуры для работа с динамическими главными переменными.

Для работы с объектами схемы базы данных необходимо указать

- базу данных;

- схему базы данных.

База данных задается оператором в программе на языке ESQL/C

Connect to <имя базы данных>@<имя сервера> USER <логин> using <Пароль>

имя базы данных, используемое в лабораторных работах 1-10 - Students;

имя сервера - fpm2;

имя логина указывается в двойных кавычках;

пароль указывается в двойных кавычках или посредством главной переменной, подлежащей вводу на этапе выполнения программы.

Для указания схемы базы данных возмодны несколько вариантов. Один из них состоит в указании перед запуском загрузочного файла с программой на языке ESQL/C схемы базы данных командой из командной строки:

Set_search_path <имя-схемы> <имя-базы данных>

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

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.

 

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

  1. Что такое главные переменные? Как они определяются и используются в программах на языке ESQL/С?
  2. Каковы правила использования SQL-описаний в программах на языке ESQL/C?
  3. Какова структура области связи SQLCA?
  4. Как обрабатываются NULL-значения в программах на языке ESQL/C?
  5. Каковы общие правила обработки ошибок SQL-вызовов?
  6. Каково назначение заголовочных файлов?
  7. Какой заголовочный файл должен быть подключен к программе для доступа к структуре SQLCA?
  8. Что такое уровень изоляции? Какой уровень изоляции может использоваться при выполнении программ данной лабораторной работы?