Скачиваний:
20
Добавлен:
01.04.2014
Размер:
180.74 Кб
Скачать

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

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

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

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

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

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

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

338 ПОНИМАНИЕ SQL

______________________________________________________________________

ГЛ. 25

Для Паскаля и 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) 339

______________________________________________________________________

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

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

жны сначала быть обьявлены в SQL DECLARE SECTION ( РАЗ-

ДЕЛе ОБЪЯВЛЕНИЙ ), использующем обычный синтаксис главного яз-

ыка. Вы можете иметь любое число таких разделов в программе, и они мо-

гут размещаться где-нибудь в коде перед используемой переменной, подчи-

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

Раздел объявлений должен начинать и кончаться вложенными командами

SQL - 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 - это заголовок который предшествует

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

сивам являющимися серией фиксированных переменных значений раз-

личаемых с помощью номеров( например, третий символ loc будет loc (3) ).

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

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

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

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

SQL, вы можете использовать SQL чтобы получать значения для этих пе-

ременных. Один из способов делать это - с помощью разновидности ко-

манды SELECT которая содержит предложение INTO. Давайте вернемся

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

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

EXEC SQL SELECT snum, sname, city, comm

Соседние файлы в папке ПОНИМАНИЕ SQL