Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD-КН1.doc
Скачиваний:
18
Добавлен:
27.04.2019
Размер:
7.07 Mб
Скачать

6.2.Особливості вбудованого sql

При об'єднанні операторів SQL з базовою мовою програмування повинні виконуватися наступні принципи:

  • Оператори SQL включають безпосередньо в текст програми на вихідній мові програмування. Вихідна програма поступає на вхід препроцесора SQL, який компілює оператори SQL.

  • Вбудовані оператори SQL можуть посилатися на змінні базової мови програмування.

  • Вбудовані оператори SQL отримують результати SQL-запитів за допомогою змінних базової мови програмування.

  • Для присвоення невизначених значень (NULL) атрибутам відношень БД використовуються спеціальні функції.

  • Для забезпечення порядкової обробки результатів запитів до вбудованого SQL додаються кілька нових операторів, які відсутні у інтерактивному SQL.

Оператори маніпулювання даними не потребують змін для їх вбудування в програмний SQL. Однак оператор вибірки (SELECT) вимагає змін.

Стандартний оператор SELECT повертає набір даних, відповідно сформованим вимогам запита. В інтерактивному SQL цей отриманий набір даних просто виводиться на консоль користувача і користувач може переглянути отримані результати. Вбудований оператор SELECT повинен створювати структури даних, узгоджені з базовою мовою програмування. У вбудованому SQL запити діляться на 2 типи:

  • Однорядкові запити, де очікувані результати відповідають одному рядку даних. Цей рядок може вміщувати значення декількох стовпців.

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

Перший тип запиту — однорядковий запит з вбудованим SQL, викликає модифікацію оператора SQL, який приймає наступний вигляд :

SELECT [ALL | DISTINCT)] <список стовпців, що повертаються>

INTO <список змінних базової мови>

FROM <список вихідних таблиць>

[WHERE <умови об'єднання та пошуку>]

У вбудований SELECT добавлений новий розділ, який має список змінних базової мови. Ось у ці змінні буде занесено результат однорядкового запиту, тому список змінних базової мови повинен бути узгоджений як за порядком, так і за типом і розміром даних зі списком стовпців, що повертаються. За правилами будь якої мови програмування всі базові змінні попередньо описують в прикладній програмі.

6.3. Оператори пов'язані з багаторядковими запитами

Для реалізації багаторядкових запитів додається нове поняття — поняття курсора або показника набора записів. Для роботи з курсором додається декілька нових операторів SQL:

  1. Оператор DECLARE CURSOR — визначає виконуваний запит, задає ім'я курсора та зв'язує результати запиту із заданим курсором. Цей оператор тільки визначає структуру майбутньої множини записів і зв'язує її з унікальним іменем курсора. Цей оператор подібний операторам опису даних у мовах програмування.

  2. Оператор ОРЕN дає команду СКБД виконати описаний запит, створити віртуальний набір рядків, що відповідає заданому запиту. Оператор ОРЕN встановлює покажчик записів (курсор) перед першим рядком віртуального набору рядків результата.

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

  4. Оператор CLOSE закриває курсор та закриває доступ до віртуального набору записів. Він фактично ліквідує зв'язок між курсором та результатом виконання базового запиту.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]