Структуризированный язык запросов (SQL)


Прикладное программирование - часть 3


где требовалось узнать количество черной икры в кладовой пансионата и занести название этого продукта и его количество в переменные Продукт и К_продукта, соответственно, переменная SQLCODE примет значение +100, так как в кладовой нет икры.

Наконец, в примере

SELECT Продукт, К_во INTO Продукт, К_продукта FROM Наличие, Продукты WHERE Наличие.ПР = Продукты.ПР;

где не указан конкретный продукт и, следовательно, SELECT спродуцирует вывод всей таблицы продуктов, значение SQLCODE будет отрицательным. При этом значения переменных Продукт и К_продукта останутся неизменными, т.е. такими, какими они были после последнего правильного выполнения команды.

В единичном SELECT можно ввести за каждой целевой переменной слово INDICATOR и имя индикаторной переменной. Значения индикаторных переменных не равны нулю только при нулевом значении SQLCODE и NULL-значениях элементов SELECT для соответствующих целевых переменных. Например, если в столбцах К_во и Стоимость продукта 9 хранится значение NULL, то после выполнения запроса

SELECT ПР, К_во, Стоимость INTO ПР INDICATOR Инд1, К_прод INDICATOR Инд2, Стоим INDICATOR Инд3 FROM Наличие WHERE ПР = 9;

будут получены следующие значения переменных: SQLCODE = 0, ПР = 9, Инд1 = 0, Инд2 = Инд3 = -1, а К_прод и Стоим имеют значение NULL.

Переменные можно использовать и в предложениях модификации данных. Приведем несколько примеров.

Изменить цены продуктов ленинградских поставщиков на величину, заданную переменной Измен:

UPDATE Поставки SET Цена = Цена + .Измен WHERE ПС IN (SELECT ПC FROM Поставщики WHERE Город = 'Ленинград');

Удалить все блюда, основа которых указана в переменной Осн:

DELETE FROM Блюда WHERE Основа = .Осн;

Добавить в таблицу Поставщики нового поставщика, атрибуты которого заданы соответствующими переменными ПС, Имя, Статус, Город, а Адрес и Телефон неизвестны:

INSERT INTO Поставщики (ПС, Название, Статус, Город) VALUES (.ПС, .Имя, .Статус, .Город);

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




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