Программирование >>  Sql: полное руководство 

1 ... 134 135 136 [ 137 ] 138 139 140 ... 264


IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. ENVIRONMENT DIVISION. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION.

EXEC SQL INCLUDE SQLCA.

EXEC SQL DECLARE SALESREPS TABLE

(EMPL NUM INTEGER NOT NULL,

NAME VARCHAR(15) NOT NULL, AGE INTEGER, REP OFFICE INTEGER,

TITLE VARCHARdO) , HIRE DATE DATE NOT NULL, MANAGER INTEGER, QUOTA MONEY, SALES MONEY NOT NULL)

END-EXEC. PROCEDURE DIVISION. *

* ВЫДАТЬ СООБЩЕНИЕ

DISPLAY Удаление данных о служащих с низким объемом продаж. .

* выполнить ИНСТРУКЦИЮ SQL

EXEC SQL DELETE FROM SALESREPS WHERE QUOTA < 150000

END-EXEC.

* ВЫДАТЬ ДРУГОЕ СООБ1ДЕНИЕ DISPLAY Удаление закончено. .

Рис.%17.5. Програша- з*0зытСОВО1 со вотел

PROGRAM SAMPLE 100 FORMATC ,А35)

EXEC

INCLUDE SQLCA

EXEC

DECLARE SALESREPS

TABLE

(EMPL NUM

INTEGER NOT NULL,

NAME

VARCHAR(15) NOT NULL,

INTEGER,

REP OFFICE

INTEGER,

TITLE

VARCHAR(10) ,

HIRE DATE

DATE NOT NULL,

MANAGER

INTEGER,

QUOTA

MONEY,

SALES

MONEY NOT NULL)

ВЫДАТЬ СООБЩЕНИЕ

WRITE (6,100) Удаление данных о служащих с низким объемом продаж.

выполнить ИНСТРУКЦИЮ SQL EXEC SQL DELETE FROM REPS С WHERE QUOTA < 150000

ВЫДАТЬ ДРУГОЕ СООБЩЕНИЕ

WRITE (6,100) Удаление закончено.

RETURN

176 Программа на asuKefORTRANco встроенным SQL



Метод встраивания, прод ионстрированный на этих трех рисунках, справедлив для любой инструкции SQL, которая- (а) не зависит от значений переменных базового языка л (б) не извлекает информацию из базы данньгх Например, в программе на языке С, приведенной на рис 17 7, которая создает новую таблицу regions и добавляет в нее две строки, для встраивания инструкций SQL применяется та же методика, что и в программе, представленной на рис. 17 4. Во всех дальнейших примерах ради однообразия используются программы на языке С, за исключением тех случаев, когда требуется проиллюстрировать особенности конкретного базового языка.

mainO

exec sql include sqlca;

/* Создать новую таблицу REGIONS

exec sql create table regions

(name char(15) ,

hq city char(15),

manager integer.

target money,

sales money,

primary key name,

foreign key manager

references salesreps)

printf( Таблица создана \n );

/* Вставить две строки */

exec sql insert into regions

values (Eastern,

New York, 106, 0.00, 0.00);

exec sql insert into regions

values (We.stern,

Los Angeles, 108, 0.00, 0.00);

printf( Таблица заполнена.\n );

exit (0) ;

Рис 177. Создание таблицы с помощью

встроенного SOL

Объявления таблиц

Инструкция declare table, представленная на рис. 17.8, объявляет таблицу, на которую будут ссьшаться одна или несколько встроенных инструкций SQL. Это необязательная инструкция, которая помогает препроцессору произвести синтаксический анализ и проверку правильности встроенных инструкций SQL. С помощью инструкции declare table программа явно указывает, какие столбцы имеются в таблице и какие они имеют размеры и типы данных. Препроцессор проверяет соответствие между ссылками на таблицы и столбцы в программе и объявлениями таблиц

Во всех трех программах, приведенных на рис 17 4, 17 5 и 17 6, применяется инструкция declare table Важно отметить, что данная инструкция предназначена Исключительно для препроцессора и для повышения удобочитаемости программы JHa не является ни исполняемой, ни обязательной инструкцией. Однако использование этой инструкции делает вашу программу более понятной и облегчает ее сопровождение Все реляционные СУБД компании IBM поддерживают инструкцию leclare table, если же какая-нибудь другая СУБД ее не поддерживает, то препроцессор выдаст сообщение об ошибке.



- DECLARE

имя табпицы-

имя првдставпвния

TABLE

( J-имя стоп6ца тип данных

- NOT NULL-

>- WITH DEFAULT-

Рис. 17.8. Синтаксическая тограмма инарукции DECLRKE TABLE

Обработка ошибок

Когда в интерактивном режиме вы вводите инструкцию SQL, вызывающую ошибку, модуль интерактивных запросов отображает на экране сообщение об ошибке, прерывает выполнение инструкции и просит вас ввести новую инструкцию. В случае встроенного SQL за обработку ошибок отвечает прикладная программа. Встроенные инструкции SQL могут вызывать сообщения об ошибках двух типов:

Ошибки компиляции. Неправильно поставленные запятые, ошибки в правописании ключевых слов SQL и другие подобные ошибки во встроенных инструкциях SQL обнаруживаются препроцессором SQL, и программист получает соответствующее сообщение. Программист может устранить эти ошибки и заново скомпилировать прикладную программу.

Ошибки выполнения. Ссылки на несуществующие столбцы или отсутствие разрешения на обновление таблицы могут быть обнаружены только во время вьшолнения. Такие ошибки должны обнаруживаться и обрабатываться прикладной программой.

В ответ на полученные инструкции СУБД возвращает программе код ошибки выполнения. Кроме того, передаются подробные диагностические сведения о возникшей ошибке и породившей ее инструкции. Впервые подобный механизм обработки ошибок появился в СУБД компании IBM, а затем, с некоторыми изменениями, бьш принят большинством ведущих СУБД. Центральный элемент этого механизма - переменная sqlcode, возвращающая код ошибки, - была закреплена в стандарте ANSI/ISO. В стандарте SQL2, опубликованном в 1992 году, бььт описан принципиально новый, альтернативный механизм обработки ошибок, подразумевающий использование переменной sqlstate. в следующих двух параграфах описаны оба механизма.

Переменная SQLCODE

Согласно стандарту SQL1, СУБД сообщает прикладной программе об ошибках, возникающих во время вьшолнения, с помощью области связей SQL (SQL Communications Area - SQLCA). Область связей представляет собой структуру данных, которая содержит переменные с информацией об ошибках и индикаторы состояния. Извлекая информацию из этой области, прикладная программа может узнать, успешно или нет была выполнена встроенная инструкция SQL, и действовать соответственно.



1 ... 134 135 136 [ 137 ] 138 139 140 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика