Мартин грубер понимание sql перевод Лебедева В. Н. Под редакцией Булычева В. Н. Москва, 1993 martin gruber
EXEC SQL INSERT INTO Salespeople VALUES (:id_num, :salesperson, :loc, :comm)
Download 1.45 Mb.
|
Грубер. Понимание SQL
- Bu sahifa navigatsiya:
- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ Все переменные, на которые имеется ссылка в предложениях SQL, должны сначала быть обьявлены в SQL DECLARE SECTION
- BEGIN DECLARE SECTION
- ИЗВЛЕЧЕНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ
EXEC SQL INSERT INTO Salespeople
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 (РАЗДЕЛЕ ОБЪЯВЛЕНИЙ), использующем обычный синтаксис главного языка. Вы можете иметь любое число таких разделов в программе, и они могут размещаться где-нибудь в коде перед используемой переменной, подчиненной ограничениям, определенным в соответствии с главным языком. Раздел объявлений должен начинать и кончаться вложенными командами 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 из таблицы Продавцов в наши переменные главного языка. Download 1.45 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling