Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
2020-06-02 | 164 |
5.00
из
|
Заказать работу |
|
|
Хотя на пути интеграции SQL с процедурными языками может возникать множество трудностей, эта задача выполнима. Во многих случаях эта интеграция – единственный способ решения поставленной задачи за разумное время. О трех методах подобной интеграции – встроенном SQL, модульном языке и инструментах RAD – кратко рассказывается в следующих разделах.
Встроенный SQL
Самый распространенный метод сочетания SQL с процедурными языками называется встроенным SQL. Как понятно из названия, операторы SQL вставляются в нужные места процедурной программы. Естественно, внезапно появившись в программе, написанной, скажем, на языке С, оператор SQL может стать неприятным сюрпризом для компилятора. По этой причине программы, в которых имеется встроенный SQL, перед компиляцией или интерпретацией пропускают через препроцессор. О встроенном SQL-коде препроцессор предупреждается директивой EXEC SQL.
В качестве примера использования встроенного SQL рассмотрим программу, написанную на языке Рго*С фирмы Oracle, являющемся вариантом языка С. Программа получает доступ к таблице с данными сотрудников компании, предлагает пользователю ввести имя сотрудника, а затем выводит зарплату и комиссионные этого сотрудника. Затем она предлагает ввести новые данные по зарплате и комиссионным этого же сотрудника и обновляет этими данными таблицу.
EXEC SQL BEGIN DECLARE SECTION;VARCHAR uid[20];VARCHAR pwd[20];VARCHAR ename[10];FLOAT salary, comm;SHORT salary_ind, comm_ind;EXEC SQL END DECLARE SECTION;main (){int sret; /* Возвращаемый код scanf *//* Регистрация */strcpy(uid.arr,"FRED"); /*Копировать имя пользователя */uid.len=strlen(uid.arr);strcpy(pwd.arr,"TOWER"); */ Копировать пароль /*pwd.len=strlen(pwd.arr);EXED SQL WHENEVER SQLERROR STOP;EXED SQL WHENEVER NOT FOUND STOP;EXEC SQL CONNECT:uid;printf("Соединение с пользователем: percents \n",uid.arr);printf("Введите имя пользователя для обновления: ");scanf("percents",ename.arr);ename.len=strlen(ename.arr);EXEC SQL SELECT SALARY,COMM INTO:salary,:cornmFROM EMPLOYWHERE ENAME=:ename;printf("Сотрудник: percents оклад: percent6.2f комиссионные:percent6.2f \n",ename.arr, salary, comm);printf("Введите новый оклад: ");sret=scanf("percentf",&salary);salary_ind =0; /* Инициализировать индикатор */if (sret == EOF!! sret == 0)salary_ind =-1; /* Установить индикатор отсутствия ввода */printf("Введите новые комиссионные: ");sret=scanf("percentf",&comm);comm_ind =0; /* Инициализировать индикатор */if (sret == EOF!! sret == 0)comm_ind=-1; /* Установить индикатор отсутствия ввода */EXEC SQL UPDATE EMPLOYSET SALARY=:salary:salary_indSET COMM=:comm:comm_indWHERE ENAME=:ename;printf("Данные сотрудника percents обновлены. \n",ename.arr);EXEC SQL COMMIT WORK;exit(0);}He надо быть экспертом по языку С, чтобы понять суть того, что и каким образом делает программа. Ниже приведена последовательность выполнения операторов.
|
· SQL объявляет базовые переменные.
· Язык С контролирует процедуру регистрации пользователя.
· SQL активизирует обработку ошибок и соединяется с базой данных.
· Язык С запрашивает у пользователя имя сотрудника, которое помещает в переменную rename.
· Оператор SQL SELECT извлекает данные по зарплате и комиссионным указанного пользователя и сохраняет их в двух переменных базового языка, salary и xomm.
· Далее язык С выводит имя сотрудника, его зарплату и комиссионные, а затем требует ввести новые значения зарплаты и комиссионных. Он также проверяет, введены ли требуемые значения, и если нет, то устанавливает индикатор отсутствия ввода.
· SQL обновляет данные в базе на основе новых значений.
· Язык С отображает сообщение о завершении операции.
· SQL завершает транзакцию, и С завершает выполнение программы.
Совет:
Смешивать команды двух языков так, как это делается здесь, можно благодаря препроцессору. Он отделяет операторы SQL от команд базового языка, помещая эти операторы в отдельную внешнюю процедуру. Каждый оператор SQL заменяется вызовом соответствующей внешней процедуры. Теперь за свою работу может приниматься компилятор этого языка. Способ, с помощью которого операторы SQL будут передаваться базе данных, зависит от реализации. Но вы как разработчик ни о чем таком беспокоиться не должны. Этим займется препроцессор. Вам надо лишь позаботиться о базовых переменных и совместимости типов данных.
|
|
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!