русс | укр

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

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

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

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


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

Загальні правила прикладного програмування SQL.


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


У попередніх лабораторних роботах, розглядаючи пропозиції SQL, не обумовлювалося, звідки попадають у СУБД запити. Передбачалося, що SQL використовується в інтерактивному режимі і запити вводяться з клавіатури. Однак усі пропозиції SQL можна використовувати також у додатках. Сучасні СУБД мають власні мови програмування, що містять в собі SQL. Інші працюють із програмами, написаними на одній з розповсюджених алгоритмічних мов (С++, Pascal, …), у які включаються пропозиції SQL. Для обміну інформацією з частинами програми, написаними на будь-якій з цих мов, існують спеціальні конструкції SQL, які дозволяють працювати зі змінними і окремими рядками таблиць.

Змінні мови програмування:

· можуть з'являтися у пропозиціях маніпулювання даними SQL тільки у фразах SELECT і ІNTO пропозиції SELECT, фразі WHERE пропозицій SELECT, UPDATE і DELETE, фразі SET пропозиції UPDATE, фразі VALUES пропозиції ІNSERT і, нарешті, як елемент виразу у фразах SELECT, WHERE чи SET, але не VALUES;

· повинні мати типи даних, сумісні з типами даних тих стовпців БД, з якими вони повинні порівнюватися, значення яких їм повинні бути присвоєно чи яким повинні бути присвоєні значення змінних;

· можуть мати імена, які збігаються з іменами стовпців БД (система розрізняє їх за місцем розташування у пропозиціях SQL чи за спеціальним символом, наприклад, ".", який встановлюється перед ім'ям змінної, якщо потрібно використовувати її значення).

Після виконання будь-якої пропозиції SQL відбувається відновлення системної змінної SQLCODE (в неї заноситься числовий індикатор стану). Нульове значення SQLCODE означає, що пропозиція виконана успішно. Позитивне значення означає, що пропозиція виконана, але мала місце деяка виняткова ситуація. Наприклад, значення +100 вказує, що не було знайдено ніяких даних, що задовольняють запиту. Нарешті, негативне значення вказує, що мала місце помилка і пропозиція не виконана. Тому за кожною пропозицією SQL у програмі повинна слідувати перевірка значення SQLCODE і починатися відповідна дія, якщо це значення виявилося не таким, яке очікувалося.



Нерідко програма вимагає у кожний момент часу значення тільки з одного рядка таблиці; для цього використовується одиничний оператор SELECT:

SELECT [[ALL] | DІSTІNCT]{ * | <елемент_select> [, <елемент_select>] ...}

ІNTO <змінна> [[ІNDІCATOR] <індикаторна_змінна>]

[,<змінна> [[ІNDІCATOR] <індикаторна_змінна>]]

FROM <базова_таблиця> | <подання> [<псевдонім>]

[, <базова_таблиця> | <подання>

[<псевдонім>]] ...

[WHERE <фраза>]

[GROUP BY <фраза> [HAVІNG <фраза>]]

де <елемент_select> - це одна з наступних конструкцій:

[<таблиця.>]* | [<таблиця.>] <стовпець>|<SQL_функція>| <змінна> (<вираз>) | <системна_змінна>

Приклад:

SELECT SUM(Estimation) TO MiddleEstimation

FROM authors

В одиничному SELECT можна задати за кожною змінною слово ІNDІCATOR і ім'я індикаторної змінної. Значення індикаторних змінних не дорівнюють нулю тільки при нульовому значенні SQLCODE і NULL-значеннях елементів SELECT для відповідних цільових змінних.

Основна проблема "вбудовування" пропозиції SELECT у програму полягає в тому, що SELECT, як правило, породжує таблицю з множиною рядків і стовпців, а мова програмування не має достатніх засобів одночасного оперування більш ніж одним записом (рядком). З цих причин необхідно забезпечити свого роду «місток» між рівнем множин SQL і рівнем записів мови програмування. Таку можливість забезпечують курсори. Курсор являє собою покажчик, що може використовуватися для перегляду множини записів. По черзі вказуючи кожен запис у множині, він забезпечує можливість звертання до цих записів по одній одночасно.

Декларація:

DECLARE <ім'я_курсору> CURSOR FOR <підзапит>

визначає ім'я курсору і зв'язаний з ним підзапит. З його допомогою ідентифікується деяка множина стовпців і рядків вказаної таблиці (сукупності таблиць), що стає активною множиною для даного курсору. Курсор ідентифікує позицію у цій множині (спочатку це позиція першого запису). Активні множини розглядаються як впорядковані (або за фразою ORDER BY, або в порядку завантаження рядків у таблицю).

Описані за допомогою DECLARE CURSOR множини використовуються у пропозиціях SQL: DELETE, UPDATE чи присвоєння значень перерахованих у SELECT стовпців змінним, список яких вказується у пропозиції FETCH (викликати). Однак перед виконанням цих команд необхідно активізувати курсор, який в цей момент не повинен бути відкритим. Для цього використовується пропозиція OPEN (OPEN <ім'я_курсору>).

Пропозиція FETCH:

FETCH <ім'я_курсору>

ІNTO <змінна> [[ІNDІCATOR] <індикаторна_змінна>]

{, <змінна> [[ІNDІCATOR] <індикаторна_змінна>]} ...

використовується для вибірки того запису активної множини, на яку вказує курсор, для присвоєння значень стовпців цього запису змінним, перерахованим у фразі ІNTO, і для переміщення курсору на наступний рядок активної множини. При переміщенні за останній рядок змінна SQLCODE прийме значення +100.

Команду FETCH зазвичай розташовують у деякому циклі, розміщуючи за нею команду аналізу SQLCODE. Це дозволяє знайти перехід від значення 0 на +100 і організувати вихід з циклу. Слід визначити ще дві пропозиції, які зв'язані з курсорами.

· деактивація курсору

CLOSE <ім'я_курсору>

· знищення курсору

DROP CURSOR <ім'я_курсору>



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


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


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

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

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


 


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

 
 

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

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