Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по ОБД ИТП 2 сем.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.48 Mб
Скачать

1.2 Види процедур, що зберігаються, в InterBase

У InterBase існує два типи процедур, що зберігаються:

1. Процедури вибору даних – можуть використовуватися замість таблиць в операторові SELECT.

2. Виконувані процедури – виробляють які-небудь дії з базою даних і не зобов'язані повертати дані. Викликаються за допомогою команди EXECUTE PROCEDURE.

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

Обидва типи процедур мають однаковий синтаксис створення і формально нічим не відрізняються. Будь-яка здійснима процедура, якщо вона має вихідні параметри, може бути викликана в запиті SELECT, будь-яка процедура вибору даних – за допомогою EXECUTE PROCEDURE. Різниця полягає в меті розробки процедур кожного виду. Процедура вибору даних спеціально створюється для виклику з оператора SELECT, а виконувана процедура – для виклику оператором EXECUTE PROCEDURE.

Приклад створення процедури вибору даних:

-- повертає перелік службовців, що працюють у відділі

-- який передається як вхідний параметр:

CREATE PROCEDURE Test_Procedure (DeptNo CHAR(3))

RETURNS

(

Number INT -- порядковий номер

EmpNo SMALLINT -- ідентифікатор службовця

FirstName VARCHAR(15) -- ім'я LastName

VARCHAR(20)-- прізвище

) AS

BEGIN

Number = 0;

FOR

SELECT EMP_NO, FIRST_NAME, LAST_NAME

FROM Employee

WHERE DEPT_NO = :DeptNo

INTO :EmpNo, :FirstName, :LastName

DO

BEGIN

Number = Number + 1;

SUSPEND;

END

END;

Кожна процедура вибору даних повинна обов'язково містити оператор SUSPEND, який передає набір вихідних параметрів в те місце, звідки викликали процедуру.

Приклад виклику процедури вибору даних:

SELECT * FROM Test_Procedure('000');

Приклад створення виконуваної процедури:

CREATE PROCEDURE MakeGenerator (GenName VARCHAR(31)

GenValue INTEGER )

AS

DECLARE VARIABLE Sql VARCHAR(256);

BEGIN

Sql = 'CREATE GENERATOR ' || GenName || ';';

EXECUTE STATEMENT Sql;

Sql = 'SET GENERATOR ' || GenName || ' TO ' ||

CAST(GenValue AS VARCHAR(10))|| ';';

EXECUTE STATEMENT Sql;

END;

Синтаксис оператора виклику процедури:

EXECUTE PROCEDURE ІмяПроцедури

[Параметр [, Параметр ...]]

[RETURNING_VALUES Параметр [, Параметр ...]];

Приклад виклику виконуваної процедури:

EXECUTE PROCEDURE MakeGenerator 'Test_Gen', 1;

2 Хід роботи

Операції по створенню процедур, що зберігаються, за допомогою виконання сценарію були вивчені в ході виконання попередніх лабораторних робіт. Для створення процедури, що зберігається, за допомогою програми "IB Expert" в діалоговому режимі необхідно виконати наступні дії:

1. Підключитися до бази даних і виконати команду головного меню "Database(New Procedure". В результаті відкриється вікно "Procedure" для створення процедури (Рисунок 9.1).

2. У цьому вікні в правому верхньому кутку слід ввести ім'я процедури (замінивши ім'я "NEW_PROCEDURE").

3. При натиснутій кнопці [Input Parameters] додати вхідні параметри. Для цього знаходячись в сітці, розташованій в середній частині вікна, натискувати клавішу [Insert] або [Стрілка вниз]. Після цього ввести в новому рядку ім'я вхідного параметра (на рисунку 9.1 ім'я вхідного параметра – "PARAM1") і за допомогою показаного на рисунку 9.1 випадного списку вибрати його тип.

4. При натиснутій кнопці [Output Parameters] так само додати вихідні параметри.

Рисунок 9.1 – Вікно створення процедури, що зберігається, в режимі діалогу

5. При необхідності так само можна додати локальні змінні (натискувати для цього кнопку [Variables]).

6. У полі введення, розташованому в нижній частині вікна, ввести тіло процедури.

7. Натискувати кнопку [Compile Procedure] (Ctrl+F9).

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

Перемикання між двома режимами перегляду і редагування процедури, що зберігається, показаними на рисунку 9.2. і 9.3 виробляється кнопкою [Lazy mode on/off].