Professional Documents
Culture Documents
1
Тіло процедури має:
- необов’язковий список локальних змінних і їх типів даних;
- блок інструкцій на мові процедур і тригерів InterBase, обмежений
BEGIN і END.
Мова процедур і тригерів InterBase містить оператори SQL, оператори IF…
THEN…ELSE, WHILE…DO, FOR SELECT…DO, виняткові ситуації і обробку
помилок.
Кожна інструкція завершується крапкою з комою, тому необхідно
визначити інший символ для завершення інструкції CREATE PROCEDURE.
Потрібно використати SET TERM поперед CREATE PROCEDURE, для того
щоб визначити термінатор, який відрізняється від крапки з комою. Після
інструкції CREATE PROCEDURE вставляють SET TERM для зміни
термінатору назад.
Інструкція Опис
2
значення виразу змвнної, локальної змінної,
вхідному параметру чи вихідному параметру.
/* comment_text */ Коментарій до програми, де comment_text може
бути текстом, який містить будь-яку кількість
рядків.
EXCEPTION Піднімає іменовану виключну ситуацію.
exception_name Виключна ситуація – визначенна користувачем
помилка, котра може бути оброблена інструкцією
WHEN.
EXECUTE PROCEDURE Виконує ПЗ proc_name із вхідними
proc_name [var [,var ...]]аргументами, які йдуть за іменем процедури, які
[RETUNING_VALUES varповертаються значеннями вихідних аргументів,
[,var ...]] перерахованими слід за RETURNING_VALUES.
EXIT Переходи до завершуючих інструкцій END в
ПЗ.
FOR <select_statement> Повторення інструкції чи блоку, котрий йде за
DO <compound_statement> DO, для кожного допустимого рядка
<select_statement>.
<select_statement>: нормальна інструкція
SELECT, за виключенням того, що INTO речення
виманає і повинно бути останніми.
<compound_statement>: чи одинична
інструкція на мові процедур і тригерів чи блок
інструкцій, який є в BEGIN і END.
IF (<condition>) Перевіряє <condition> і, якщо умова TRUE,
4
param - ім’я вхідного параметру, унікальне для змінних всередині
процедури;
<datatype> - будь-який тип даних InterBase;
RETURNS param <datatype> - вихідний параметр, котрий процедура
використовує, щоб вернути значення у викликаючи програму.
Процедура повертає значення вихідних параметрів, коли досягає інструкції
SUSPEND в тілі процедури.
AS - ключове слово, котре розділяє заголовок процедури і тіло процедури.
DECLARE VARIABLE var <datatype> - об’являє локальні змінні, які
використовуються тільки у процедурі. Кожному об’явленню повинно
передувати DECLARE VARIABLE із крапкою з зап’ятою (;);
Statement – будь-яка одинична інструкція в мові процедур і тригерів
InterBase. Кожна інструкція (виключаючи BEGIN і END) повинні
завершуватися точкою з зап’ятою (;).
Terminator – термінатор, визначений SET TERM, котрий вказує на
завершення тіла процедури. Використовується тільки в ISQL.
5
SET TERM !! ;
CREATE PROCEDURE sub_tot_budget (head_dept CHAR(3))
RETURNS (tot_budget DECIMAL(12, 2), avg_budget DECIMAL(12, 2),
min_budget DECIMAL(12, 2), max_budget DECIMAL(12, 2))
AS
BEGIN
SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget)
FROM department
WHERE head_dept = :head_dept
де name – ім’я ПЗ, яка існує у БД, param – вхідні параметри (константи).
7
2. Функцію за номером бригади, що повертає рядок з наведеними через кому
деталями, які вона випускає (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, яка видаляє записи деталі, які не випускає жодна з бригад.
Варіант №2
1. Процедуру, яка по номеру рахунка визначає нарахування за рік.
2. Функцію по № рахунка, що повертає рядок, в якому через кому наведені
прізвище вкладника, кількість коштів на рахунку (функція повинна бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про зміни у рахунку за минулий рік.
Варіант №3
1. Процедуру, яка за номером моделі і матеріалу, визначає модель як
молодіжну. Якщо такий запис був без дати визначення, то в це поле
заноситься теперішня дата.
2. Функцію по № моделі, що повертає рядок, в якому через кому наведені
назву моделі, назву матеріала (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про неходові моделі за минулий рік.
Варіант №4
1. Процедуру, яка по номеру рейса і за поганих погодних умов назначає літаку
інший рейс.
2. Функцію по № рейса, що повертає рядок, в якому через кому наведені
прізвища членів екіпажу (функція повина бути доступною для використання в
SQL операторах).
3. Процедуру, що видаляє всі записи про перенесення рейсів за минулий рік.
Варіант №5
1. Процедуру, яка по номеру телефону абонента визначає оплату за
розмови. Якщо не було запису про сплату розмов за попередній термін, то в
це поле заноситься сумарна оплата.
8
2. Функцію по № абонента, що повертає рядок, в якому через кому
наведені прізвище абонента, оплата за телефон (функція повина бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про оплату за позаминулий
рік.
Варіант №6
1. Процедуру, що автоматично призначає премію передплатнику, який
передплатив на більшу суму.
2. Функцію за адресою передплатника, що повертає рядок, в якому через кому
наведені назви видань (функція повина бути доступною для використання в
SQL операторах).
3. Процедуру, що видаляє всі записи про передплатників, які не передплатили
жодного видання.
Варіант №7
1. Процедуру, що автоматично ділить групи на підгрупи, якщо у групі
навчається більше 20 студентів.
2. Функцію за назвою групи, що повертає рядок, в якому через кому
наведені номера відповідних лабораторій і час занять (функція повина бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи у розкладі про групи за
виключенням однієї, якщо є накладка.
Варіант №8
1. Процедуру, що автоматично призначає премію водію, який найбільш
успішно працює.
2. Функцію за назвою вантажу, що повертає рядок, в якому через кому
наведені номера рейсів, водіїв (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє записи про вантажі, які всі перевезені.
Варіант №9
9
1. Процедуру, що автоматично припиняє доставку, якщо будматеріали
скінчились;
2. Функцію за назвою будматеріалу, що повертає рядок, в якому через кому
наведена кількість наявних і використаних матеріалів (функція повина бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про будматеріали, які всі доставлені.
Варіант №10
1. Процедуру, що автоматично збільшує кількість фуражу корови, яка має
більшу продуктивність.
2. Функцію за прізвиськом корови, що повертає рядок, в якому через кому
наведені надої, фураж (функція повинна бути доступною для використання в
SQL операторах)
3. Процедуру, що видаляє всі записи про фураж позаминулого року.
Варіант №11
1. Процедуру, що автоматично встановлює ставку робітнику, при зміні його
посади.
2 Функцію за прізвищем робітника, що повертає рядок, в якому через кому
наведені табельний номер робітника, кількість відпрацьованих змін в місяц
(функція повинна бути доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про робітників, що звільнились.
Варіант №12
1. Процедуру, що автоматично визначає державу, як країну з ринковою
економікою, якщо регулювання економіки відмінено.
2. Функцію за назвою держави, що повертає рядок, в якому через кому наведені
ВВП, наявність лісів (функція повина бути доступною для використання в
SQL операторах).
3. Процедуру, що видаляє всі записи про бідність, якщо середні доходи
збільшились у два рази.
Варіант №13
10
1. Процедуру, що автоматично зараховує абітурієнта, якщо він сдав іспити на
п’ятірки.
2 Функцію за прізвищем абітурєнта, що повертає рядок, в якому через кому
наведені номер екзаменаційного листа, кількість зданих іспитів (функція
повина бути доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про абітурієнтів, що забрали документи.
Варіант №14
1. Процедуру, що автоматично призначає на гру переможців попереднього
туру.
2. Функцію за призвищем шахиста, що повертає рядок з номерами (через кому)
шахистів, які йому програли (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє записи про відкладені партії, якщо партії завершено.
Варіант №15
1. Процедуру, що автоматично призначає знижку на товари, якщо закінчився
сезон.
2. Функцію за номером покупця, що повертає рядок, в якому через кому
наведені призвище покупця та номери його покупок (функція повина бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про продавців, які звільнилися місяць
тому.
Варіант №16
1. Процедуру, що автоматично визначає інше місце рибалки, якщо ресурси
вичерпано.
2. Функцію за номером бригади, що повертає рядок, в якому через кому
наведені прізвище бригадира, улов 31 жовтня (функція повинна бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про улов, якщо ресурси вичерпано.
11
Варіант №17
1. Процедуру, яка збільшує платню кожному програмісту на 2*(кількість мов,
що він знає на 7 і більше балів)%.
2. Функцію за номером службовця, що повертає рядок з наведеними через кому
мовами, які він опанував (функція повина бути доступною для використання
в SQL операторах).
3. Процедуру, яка видаляє записи про мови програмування, які не знає жоден
службовець.
Варіант №18
1. Процедуру видачі книги, що за номером книги і читача додає новий запис у
таблиці зв’язку, якщо цей читач не є боржником.
2. Функцію за номером читача, що повертає рядок, в якому через кому
наведені наявні у нього книги (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про видачу книг за минулий рік (крім
записів про книги, які не повернені).
Варіант №19
1. Процедуру, що автоматично призначає старостами груп (де ще не має
старости) студентів з цих груп, які найбільш успішно навчаються.
2. Функцію за назвою спеціальністі та № курсу, що повертає рядок, в якому
через кому наведені номера відповідних груп (функція повинна бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про групи, в яких не має студентів.
Варіант №20
1. Процедуру, що за номером книги і номером автора додає автора в кінець
списку авторів.
2. Функцію за № книги, що повертає рядок, в якому через кому наведені
прізвища і ініціали її авторів (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про авторів, у яких немає книг.
12
Варіант №21
1. Процедуру, що за номером предмета і номером викладача, у випадку якщо
викладач є професором і викладає цей предмет, призначає його ведучим
викладачем по предмету.
2. Функцію по № викладача, що повертає рядок, в якому через кому наведені
предмети, які він викладає (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про викладачів, які не викладають
жодного предмету.
Варіант №22
1. Процедуру, яка збільшує складність гуманітарних предметів на 1,
профільних на 2, а фундаментальних – зменшує на 1.
2. Функцію за № предмета, що повертає рядок, в якому через кому наведені
групи, де цей предмет вивчають (функція повинна бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про предмети, які не вивчає жодна група.
Варіант №23
1. Процедуру, яка обчислює відсоток знижки: першим 3 клієнтам по обсягу
замовлення – 15%, наступним 7 – 10% і останнім, що зробили хоча б одне
замовлення, - 5%.
2. Функцію по № фірми, що повертає рядок, в якому через кому наведені
номери замовлень фірми (функція повинна бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про торішні замовлення.
Варіант №24
1. Процедуру, яка по номеру студента і кімнати переселяє його у нову кімнату.
Якщо був запис про його мешкання у іншій кімнаті без дати виселення, то в
це поле заноситься теперішня дата.
13
2. Функцію по № кімнати, що повертає рядок, в якому через кому наведені
прізвіща студентів, які там мешкають (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про переселення студента за минулий рік.
Варіант №25
1. Процедуру, яка за номером залікової книжки автоматично заносить
теперішній час в поле “час завершення роботи”.
2. Функцію по № кімнати, що повертає строку, в якій через кому наведені не
зайняті і працюючі комп’ютери (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про роботу за минулий рік.
Варіант №26
1. Процедуру, яка за номером хворого та номером діагнозу додає новий
запис у таблицу діагнозов хворих. І якщо цей діагноз уточнює попередній
діагноз, то видаляє запис про нього.
2. Функцію по № хворого, що повертає рядок, в якому через кому наведені
назви його хвороб (функція повина бути доступною для використання в SQL
операторах).
3. Процедуру, що видаляє всі записи про хворих, яки народились до 1900
року.
Варіант №27
1. Процедуру, яка за номером картки пацієнта додає запис про хвороби у
таблицю клієнта.
2. Функцію по номеру лікаря, що повертає рядок, в якому через кому наведені
прізвище та номер кабінету (функція повина бути доступною для
використання в SQL операторах).
3. Процедуру, що видаляє всі записи про пацієнтів, які забрали картки.
Варіант №28
1. Процедуру, яка за табельним номером співробітника та номером фаху додає
новий запис про курси у таблицу навчання.
14
2. Функцію по номеру курсів, що повертає рядок, в якому через кому наведені
прізвища співробітників, які прослухали цей курс (функція повинна бути
доступною для використання в SQL операторах).
3. Процедуру, що видаляє всі записи про звільнених співробітників.
15
5.4 МЕТОДИКА ВИКОНАННЯ
Створення процедур схоже до опису інших об’єктів. У лівому вікні
обираємо Процедуры і створюємо новий об’єкт.
.
У вікні, що з’явилось, схожа структура до розглянутих вище об’єктів:
16
Потрібно задати ім’я нової процедури в полі:
,
а також параметри процедури в полі:
.
Параметри задаються послідовно: ім’я, тип, якщо потрібно – довжина.
17