Накопичена
інформація в сучасних інформаційних технологіях зберігається і організовано в базах даних. Ці
бази даних створюються і працюють за допомогою систем управління базами даних
(СУБД). P>
Розвиток
комп'ютерних технологій, збільшення обсягу та структурної складності збережених даних, збільшення числа
користувачів інформаційних систем призвели до поширення реляційних СУБД. p>
Користуватися базами
даних з різних куточків світу, з різних архітектур ЕОМ по мережі можна
за допомогою одного стандартного мови маніпулювання даними. Розроблений в
1974 мову SQL фірмою IBM для експериментальної реляційної СУБД System R
став стандартом (спочатку де-факто), завдяки поширенню двох СУБД (тієї ж
фірми) - SQL/DS (1981 рік) і DB2 (1983 рік), а визнання SQL міжнародним
стандартом відбулося в 1987 році. p>
Реалізація в SQL
концепції операцій, орієнтованих на табличне представлення даних,
дозволило створити компактний мову з невеликим (менше 30) набором пропозицій.
SQL може використовуватися як інтерактивний (для виконання запитів) і як
вбудований (для побудови прикладних програм). p>
Програмісти
користуються мовою SQL, щоб писати додатки, у яких містяться звернення
до баз даних. Одні й ті ж оператори SQL використовуються як для інтерактивного,
так і для програмного доступу, тому частини програм, що містять звернення до
базі даних, можна спочатку тестувати в інтерактивному режимі, а потім
вбудовувати в програму. У традиційних базах даних для програмного доступу
використовуються одні програмні кошти, а для виконання негайних запитів --
інші, без будь-якого зв'язку між цими двома режимами доступу. p>
Багато сучасних
СУБД мають власні мови програмування, ряд яких включає в себе SQL.
Інші працюють з програмами, написаними на одному з поширених
алгоритмічних мов (Сі, Паскаль або Фортран), в які включаються
пропозиції SQL. Для обміну інформацією з частинами програми, написаними на
будь-яких з цих мов, існують спеціальні конструкції SQL, що дозволяють
працювати зі змінними та (або) окремими рядками таблиць. p>
У письмовій роботі
буде розглянуто використання SQL в прикладному
програмуванні. p>
У першому розділі мова
піде про структуру модуля SQL і вбудованому SQL. Визначення процедур. P>
У другому розділі
описані оператори маніпулювання даними. Оператори, пов'язані з курсором, а
так само поодинокі оператори маніпулювання даними. p>
У третьому розділі
буде розглянуто динамічний SQL в Oracle V.6. p>
1. Мова модулів і
вбудований SQL h2>
У стандарті SQL/89 визначені два способи
взаємодії з БД з прикладної програми, написаної на традиційному мовою
програмування. p>
Перший спосіб полягає в тому, що всі оператори SQL, з
якими може працювати дана прикладна програма, зібрані в один модуль і
оформлені як процедури цього модуля. Для цього SQL/89 містить спеціальний
под'язик - мова модулів. При використанні такого способу взаємодії з БД
прикладна програма містить виклики процедур модуля SQL з передачею їм
фактичних параметрів і отриманням відповідних параметрів. p>
Другий спосіб полягає у використанні так званого
вбудованого SQL, коли з використанням спеціального синтаксису в програму на
традиційному мовою програмування вбудовуються оператори SQL. У цьому випадку з
точки зору прикладної програми оператор SQL виконується "по
місця ". Явна параметризація операторів SQL відсутній, але у вбудованих
операторах SQL можуть використовуватися імена змінних основної програми, і за
рахунок цього забезпечується зв'язок між прикладною програмою і СУБД. p>
Концептуально ці два способи еквівалентні. Більше
того, в стандарті встановлюються правила породження неявного модуля SQL по
програмі з вбудованим SQL. Однак у більшості реалізацій оператори SQL,
що містяться в модулі SQL, і вбудовані оператори SQL обробляються
суттєво по-різному. Модуль SQL звичайно компілюється окремо від прикладної
програми, в результаті чого породжується набір так званих збережених процедур
(у стандарті цей термін не використовується, але поширений в комерційних
реалізаціях). Тобто у випадку використання модуля SQL компіляція операторів SQL
проводиться один раз, і потім відповідні процедури скільки завгодно разів
можуть викликатися з прикладної програми. p>
На відміну від цього, для операторів SQL, вбудованих в
прикладну програму, компіляція цих операторів зазвичай проводиться кожного разу
при їх використанні (правильніше сказати, при кожному першому використанні
оператора при даному запуску прикладної програми). p>
Звичайно, користувачі не зобов'язані знати про це
технічному відмінності в обробці двох видів взаємодії з СУБД. Існують і
такі системи, які виробляють одноразову компіляцію вбудованих операторів
SQL і зберігають скомпільованій код. Але все-таки краще мати це на увазі. p>
При використанні мови модулів текст прикладної
програми має менший розмір, взаємодії з СУБД більш локалізовані за
рахунок наявності явних параметрів виклику процедур. З іншого боку, для розуміння
сенсу поведінки прикладної програми буде потрібно одночасне читання двох
текстів. Крім того, як здається, синтаксис модуля SQL може істотно
відрізнятися в різних реалізаціях. Вбудований SQL надає можливість
виробництва більш "самосодержащіхся" прикладних програм. Є
більше підстав розраховувати на простоту перенесення такої програми в середу
інший СУБД, оскільки стандарт вбудовування більш-менш дотримується.
Основним недоліком є деякий PL-подібний вид таких програм,
незалежно від вибраного основного мови. p>
1.1. Мова модулів h2>
Структура модуля SQL в стандарті SQL/89 визначається
наступними синтаксичними правилами: p>
::= p>
p>
p>
p>
[...] p>
... P>
:: = MODULE [] p>
:: = LANGUAGE (COBOL | FORTRAN
| PASCAL | PLI) p>
::= p>
AUTHORIZATION
p>
:: =
p>
Істотно, що кожен модуль SQL орієнтований на
використання в програмах, написаних на конкретній мові програмування.
Якщо в модулі присутні процедури роботи з курсором, то всі курсори повинні
бути специфікована на початку модуля. Зауважимо, що оголошення курсору не
занурюється в яку-небудь процедуру, оскільки це описовий, а не
виконуваний оператор SQL. p>
1.1.2. Визначення процедури b>
p>
Процедури в модулі SQL визначаються наступними
синтаксичними конструкціями: p>