русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Збережені на сервері процедури Створення виконуваних процедур


Дата добавления: 2015-07-09; просмотров: 556; Нарушение авторских прав


Клієнти, які зв'язані з SQL сервером, можуть звертатися до його потужностей для рішення складних задач. Це ефективніше, ніж розв’язувати подібні задачі на більш слабкому комп'ютері клієнта. До того ж, це дозволяє мінімізувати обсяги інформації, що пересилається мережею. Наприклад, якщо користувачу потрібно відшукати тільки один конкретний запис і переглянути в ньому деякі поля, доцільно всю процедуру пошуку виконати на сервері, а користувачу переслати тільки поля знайденого для нього запису. В ідеалі клієнт повинний одержувати тільки той мінімум даних, якими маніпулює користувач.

Багато серверів, у тому числі InterBase, дозволяють написання спеціальних процедур, що зберігаються і виконуються на сервері. На жаль, мова написання збережених процедур різна у різних системах. І мова InterBase має мало спільного з мовою Sybase чи Microsoft SQL сервера.

InterBase підтримує два види збережених процедур: виконувані (Execute), що можуть передавати параметри іякі маніпулюють даними, іпроцедури вибору (SELECT), що є таблицями тільки для читання, але які сприймають параметри для визначення результатів, що повертаються.

Розглянемо спочатку процес створення виконуваних збережених процедур. Найпростіший шлях для цього — написання відповідних script-файлів і їхнє виконання за допомогою WISQL. Варто підкреслити, що використання інтерактивного режиму роботи з WISQL для створення збережених процедур не допускається.

Структура відповідного файлу може мати вид:

CONNECT <база даних > USER <ім'я користувача >

PASSWORD <пароль >;

SЕТ AUTODDL OFF;

SET TERM ^;

CREATE PROCEDURE<ім'я процедури > AS BEGIN

END^

SET TERM;^

COMMIT;

Перша команда Connect зв'язується з базою даних. Друга команда Set відключає опцію AUTODDL. Це запобігає передчасному створенню процедури. Наступна команда Set Term замінює символ закінчення «;» на «^». Навіщо це треба? Оператори InterBase і оператори SQL, що використані при написанні тексту процедури, мають однакові символи закінчення — «;». Тому транслятор не зможе розібратися, де оператори InterBase, а де оператори процедури. Щоб не виникало цієї плутанини, команда Set тимчасово замінює символ закінчення операторів InterBase на «^». У результаті транслятор буде знати, що оператор, який закінчується символом «^» — це оператор InterBase. А символи закінчення операторів процедури залишаються без змін — «;».



Після розглянутих підготовчих операторів йде оператор створення процедури Create Procedure, у якому вказується ім'я процедури. Після ключового слова AS йдуть оператори самої процедури, що починаються з begin і закінчуються end^. Після цього оператора транслятор починає обробляти подальше як оператори InterBase. Наступний оператор Set Term переключає символ закінчення на традиційний — «;», а оператор Commit фіксує результат створення процедури в базі даних.

Файл може містити оператори створення декількох процедур. Кожна з них компілюється окремо. Ті, котрі відкомпілювались без синтаксичних помилок, будуть записані в базу даних.

Після того, як процедура створена, її можна тестувати у WISQL в інтерактивному режимі. Для виклику процедури достатньо виконати оператор

EXECUTE PROCEDURE < ім'я >;

Процедури можуть виконуватися будь-яким шляхом: інтерактивно в WISQL, з додатка, можуть викликатися з інших процедур і навіть із самих себе — тобто передбачена можливість рекурсії.

Видалити з бази даних процедуру, що виявилася помилковою, можна оператором

DROP PROCEDURE < ім'я >;

Розглянута вище структура процедури — найпростіша. Вона відповідає процедурі, у яку не передається ніяких параметрів і яка нічого не повертає, а просто, наприклад, змінює базу даних. Розглянемо тепер приклад більш складної процедури з параметрами. У цю процедуру з ім'ям GetInf передаються прізвище, ім'я і по батькові співробітника. Процедура повертає інформацію про співробітника: рік народження, підрозділ, у якому співробітник працює, і стать. Якщо запис співробітника в базі даних не виявлений, то як рік народження повертається 0, що може бути для додатка, що викликав процедуру, сигналом відсутності викликаного запису.

Без стандартних початкових і кінцевих операторів створення такої процедури здійснюється наступним кодом:

CREATE PROCEDURE GetInf

(pFam char(20), pNam char(20), pPar char(20)) RETURNS (pYear integer, pDep char(15), pSex char (1))

AS BEGIN

pYear=0;

SELECT Year_b, Dep, Sex From Pers

WHERE (Fam=:pFam) and (Nam=:pNam) and (Par=:pPar)

INTO pYear, pDep, pSex;

END;^

Переглянувши даний текст, ви можете побачити, що передані в процедуру параметри визначаються через прискобочний запис, що йде за ім'ям процедури, причому для кожного параметра вказується його тип. Параметри, що повертаються, вказуються аналогічним чином після ключового слова RETURNS.У наведеній процедурі усі імена параметрів починаються із символу «р», але це, звичайно, не обов'язково. Просто подібне позначення дозволяє легше читати текст процедури і не плутати параметри з іменами полів.

Тіло процедури складається усього з двох операторів. Перший з них задає значення параметра, що повертається, pYear, рівним нулю. Другий оператор SELECTшукає запис, у якому значення полів Fam, Nam і Par збігаються відповідно з заданими значеннями прізвища, імені і по батькові (параметрами рРаm, pNam і рРаг).Якщо такий запис знайшовся, то в параметри pYear, pDep і pSex(зазначені після ключового слова Into) передаються значення полів Year_b, Dep і Sex, зазначених після ключового слова SELECT.У такий спосіб конструкція SELECT ... Into дозволяє заносити результати відбору в параметри. Якщо шуканий запис відсутній у базі даних, оператор SELECTнічого в параметри не заносить. Отже, у параметрі, що повертається,pYear залишиться 0, що привласнений попереднім оператором. Це буде сигналом для програми, що викликала дану процедуру, про відсутність запису. Виклик такої процедури з WISQL може здійснюватися оператором виду:

EXECUTE PROCEDURE GETINF("Іванов", "Іван", "Іванович")

Наведена процедура ілюструє деякі можливості опису виконуваних збережених процедур. У процедурах можна використовувати цикли, оператори умовної передачі інформації тощо. Більш докладну інформацію можна знайти у вбудованій у WISQL довідці.



<== предыдущая лекция | следующая лекция ==>
Перегляди | Збережені процедури вибору


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.372 сек.