Використання збережуваних процедур в Delphi

Компонент TIBStoredProc призначений для виконання збережених процедур, які зберігаються на сервері, і повернення результатів їх роботи. При з'єднанні з базою даних у властивість StoredProcedureNames завантажується список доступних в базі даних збережуваних процедур. З допомогою влястивості  StoredProcName можна вказати збережувану процедуру, результат роботи якої ми очікуємо.

Як правило, збережувані процедури мають набори вхідних і вихідних параметрів, які містяться у властивості Params. Звернутися до будь-якого з них можна за його індексом або за імені, використовуючи метод ParamByName. Загальна кількість параметрів, які містить збережувана процедура, зберігається у властивості ParamCount.

Метод Prepare здійснює підготовку процедури до виконання. Підготовка полягає в тому, що сервер оптимізує виконання і компіляцію процедури, після чого зберігає результат компеляції. Це скорочує до мінімуму час звернення до процедури. Визначити, чи готова збережена процедура до виконання, дозволяє властивість Prepared. Якщо властивість має значення True, то збережена процедура підготовлена ​​до виконання.

Читати повністю

Створення та використання зображень засобами SQL

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

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

Якщо визначення зображення просте, то СУБД формує кожен рядок результуючої віртуальної таблиці при кожному зверненні до зображення, витягуючи дані з вихідних таблиць. Якщо ж визначення складне, СУБД виконує запит, що визначає зображення, і зберігає його результати в тимчасовій таблиці. З неї СУБД бере дані для формування результатів, при зверненні до даного зображення. Коли тимчасова таблиця стає непотрібною, СУБД видаляє її. Але незалежно від того, як саме СУБД виконує інрукцію, що є визначенням зображення, для користувача результат буде одним і тим же. SQL запит на вибірку даних із зображення здійснюється так само, як і на вибірку даних з реальної таблиці.

Читати повністю

Використання циклів і операторів розгалуження в збережуваних процедурах

Основна проблема використання конструкції SELECT в збережуваних процедурах полягає в тому, що результуючий набір даних, який повертає SELECT є, як правило, таблиця з множиною рядків і стовпців, а вбудована в SQL процедурна мова не має засобів, які б дозволяли оперувати одночасно більш ніж одним записом. Тобто, якщо нам потрібно сформувати запит, який повертатиме один ря'док, для цього використовується SELECT, який має наступний формат:

SELECT {*|<Список полів>}
FROM <Список таблиць>
[WHERE <Критерій відбору>]
INTO змінна [, змінна,...];

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

Приклад: написати процедуру, яка повертає кількість автомобілів, які містяться в таблиці Cars.

Читати повністю

Використання збережуваної процедури в SQL

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

Основою могутніх можливостей, закладених у збережувану процедуру, є процедурна мова програмування, що має у своєму складі як модифіковані речення звичайного SQL, такі, як INSERT, UPDATE і SELECT, так і засоби організації розгалужень і циклів (IF, WHILE), а також засоби обробки помилок і виняткових ситуацій. Мова збережуваних процедур дозволяє реалізувати складні алгоритми роботи з даними, а завдяки орієнтованості на роботу з реляційними даними збережувані процедури виходять значно компактнішими аналогічних процедур на традиційних мовах.

Існують два типи збережуваних процедур:

  1. Процедури вибору: як результат своєї роботи повертають набір даних або повідомлення про помилку.
  2. Процедури дії: за загальним призначенням не відрізняються від процедур (підпрограм) в алгоритмічних мовах, таких як Паскаль, основна відмінность полягає в синтаксисі мови і здійснюють з базою даних деяку дію.

Обидва типи збережуваних процедур створюються командою CREATE PROCEDURE, яка має наступний формат:

Читати повністю