|
Программирование >> Sql: полное руководство
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)
ВЫДАТЬ СООБЩЕНИЕ 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. Во всех дальнейших примерах ради однообразия используются программы на языке С, за исключением тех случаев, когда требуется проиллюстрировать особенности конкретного базового языка.
Объявления таблиц Инструкция 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, и действовать соответственно.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |