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

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

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

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

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

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

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

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

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

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

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

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

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

Тригери в SQL

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

  1. BEFORE INSERT  - подія, яка виникає перед добпвлення нового запису до таблиці БД.
  2. BEFORE DELETE - подія, яка виникає перед видаленням запису з таблиці БД.
  3. BEFORE UPDATE - подія, яка виникає перед редагуванням запису в таблиці БД.
  4. AFTER INSERT - подія, яка виникає після добпвлення нового запису до таблиці БД.
  5. AFTER DELETE - подія, яка виникає після видаленням запису з таблиці БД.
  6. AFTER UPDATE - подія, яка виникає після редагуванням запису в таблиці БД.

На відміну від збережуваних процедур, тригер завжди прив'язаний до деякої таблиці БД. Тригер не має вхідних або вихідних параметрів.

Приклад: для таблиці Cars створимо тригер tcar_id, за допомогою якого в поле Kod вставляється значення генератора car_id.

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