4.6.2 Підпрограми
Мова PL/SQL має два види підпрограм: процедури і функці.
Подібно до інших об’єктів БД їх створюють командою CREATE, а
знищують командою DROP. Для створення процедури, функції чи
пакета необхідно мати системний привілей CREATE PROCEDURE.
Пакет являє собою блок підпрограм, який має власне ім’я. Крім
підпрограм, він містить їх опис і ті, що описані, є глобальними,
тобто доступними зовні пакета. Неописані підпрограми є
локальними, вони доступні лише підпрограмам, які знаходяться в
складі пакета.
Пакет вигідно застосовувати для обмеження доступу до
програм різних користувачів, тоді кожний користувач має свій
пакет. Іноді пакети складають з програм, призначених для певного
виду робіт, для обслуговування певних наборів даних тощо.
У визначені процедури чи функції необхідно задавати імена,
типи і види параметрів. Існують такі види параметрів: IN (не
змінюється підпрограмою), OUT (припускає зміну значення
параметра) чи IN OUT (параметр може бути зміненим у тілі
підпрограми).
Оператор визначення процедури має такий синтаксис:
CREATE [OR REPLACE] PROCEDURE [ім'я_схеми.]ім'я_процедури
[(перелік_параметрів_і_їх_типів)]
AS текст_nідпporpaми_мовою_PL/SQL;
Ключове слово OR REPLACE означає заміщення старого тексту
процедури. Якщо цього слова немає, а процедура вже існує, то її
заміщення не відбувається і повертається повідомлення про
помилку.
Зауважимо, що для опису власних змінних процедури ключове
слово DECLARE не використовується, блок визначення її даних
починається відразу після ключового слова AS.
Розглянемо приклад створення процедури InsRecOblik, яка
заносить у таблицю Oblik нашого прикладу один запис. Поле Data
таблиці містить поточну системну дату. Процедура приймає три
вхідні параметри виду IN числового типу і має такий вигляд:
SQL> CREATE OR REPLACE PROCEDURE InsRecOblik
2 (Kodpr IN INTEGER, Kodpp IN INTEGER, Kil IN NUMBER)
3 AS
4 BEGIN