Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по SQL.DOC
Скачиваний:
205
Добавлен:
01.05.2014
Размер:
1.16 Mб
Скачать

Values ( :id_num, :salesperson, :loc, :comm)

Текущие значения этих переменных будут помещены в таблицу. Как вы

можете видеть, переменная comm имеет то же самое имя, что и столбец, в

который это значение вкладывается.

Обратите внимание, что точка с запятой в конце команды отсутствует. Это

потому, что соответствующее завершение для вложенной команды SQL за-

висит от языка, для которого делается вложение.

Для Паскаля и PL/1, это будет точка с запятой; для КОБОЛА, слово

END-EXEC ; и для ФОРТРАНА не будет никакого завершения.

В других языках это зависит от реализации, и поэтому мы договоримся,

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

Способ сделать команду полностью такой, как описана выше, состоит в

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

while not end-ot-file (input) do

begin

readln (id_num, salesperson, loc, comm);

EXEC SOL INSERT INTO Salespeople

Values (:id_num, :salesperson, :loc, :comm);

end;

Фрагмент программы на ПАСКАЛЕ, определяет цикл, который будет

считывать значения из файла, сохранять их в четырех проименованных

переменных, сохранять значения этих переменных в таблице Продавцов,

и затем считывать следующие четыре значения, повторяя этот процесс

до тех пор, пока весь входной файл не прочитается. Считается, что каждый набор значений завершается возвратом каретки ( для незнакомых с Паскалем, функция readln считывает вводимую информацию и переходит на следующую строку источника этой информации). Это дает вам простой способ передать данные из текстового файла в реляционную структуру.

Конечно, вы можете сначала обработать данные любыми возможными

способами на вашем главном языке, например для исключения всех комиссионных ниже значения .12

while not end-ot-file (input) do

begin

readln (id_num, salesperson, loc, comm);

if comm > = .12 then

EXEC SQL INSERT INTO Salespeople

VALUES (:id_num, :salesperson, :loc, :comm);

end;

Только строки, которые встретят условие comm >= .12 будут вставлены в

вывод. Это показывает, что можно использовать и циклы, и условия как

нормальные для главного языка.

ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ

Все переменные, на которые имеется ссылка в предложениях SQL, дол-

жны сначала быть обьявлены в SQL DECLARE SECTION ( РАЗДЕЛе ОБЪЯВЛЕНИЙ ), использующем обычный синтаксис главного языка. Вы можете иметь любое число таких разделов в программе, и они могут размещаться где-нибудь в коде перед используемой переменной, подчиненной ограничениям, определенным в соответствии с главным языком.

Раздел объявлений должен начинаться и кончаться командами BEGIN DECLARE SECTION ( Начало Раздела Объявлений ) и END DECLARE SECTION ( Конец Раздела Объявлений ), которым предшествует, как обычно EXEC SQL (Выполнить).

Чтобы обьявить переменные, используемые в предыдущем примере, вы

можете ввести следующее:

EXEC SQL BEGIN DECLARE SECTION;

Var

id-num: integer;

Salesperson: packed array (1 . .10) ot char;

loc: packed array (1. .10) ot char;

comm: real;

EXEC SQL END DECLARE SECTION;

Для незнакомых с ПАСКАЛем, Var - это заголовок который предшествует

ряду обьявляемых переменных, и упакованным ( или распакованным ) массивам.

Использование точки с запятой после каждой переменной указывает на то

что это Паскаль, а не SQL.

ИЗВЛЕЧЕНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ

Кроме помещения значений переменных в таблицы при помощи команд

SQL, вы можете использовать SQL, чтобы получать значения для этих переменных. Один из способов делать это - с помощью разновидности команды SELECT, которая содержит предложение INTO. Давайте вернемся

к нашему предыдущему примеру и переместим строку Peel из таблицы

Продавцов в наши переменные главного языка.

EXEC SQL SELECT snum, sname, city, comm

Соседние файлы в предмете Базы данных