
13.6. Процедуры и функции
Процедуры и функции – это именованные блоки PL/SQL. Их также называют подпрограммами. Они компилируются и хранятся в базе данных. Анонимные блоки, рассмотренные ранее – это неименованные блоки. Они после выполнения не сохраняются для последующего повторного использования.
Синтаксис процедуры:
CREATE [OR REPLACE] PROCEDURE имя_процедуры
[(аргумент1 [тип_параметра1] тип_данных1,
[(аргумент2 [тип_параметра2] тип_данных2, . . .)]
IS|AS
тело_процедуры;
Вызов процедуры в анонимном блоке можно осуществить по имени:
Begin
Имя_процедуры;
END;
Процедуру можно также вызвать с помощью команды CALL:
CALL <имя_процедуры>
Пример. Пусть имеется таблица DEPARTAMENTS – Компании
D.DEPARTAMENTS(D_ID, D_Name, Manager_ID, Location_ID)
Создадим процедуру с именем add_dept вставки новой строки с указанием номера отдела и наименованием.
CREATE PROCEDURE add_dept IS
Dept_id D.D_ID%TYPE;
Dept_name D.D_Name%TYPE
BEGIN
Dept_id:=330;
Dept_name:=”АСОИУ”;
INSERT INTO D(D_ID, D_Name)
VALUES(Dept_id, dept_name);
DBMS_OUTPUT.PUT_LINE(‘Введена’|| SQL%ROWCOUNT|| ‘строка’);
END;
В декларативной секции процедуры объявлены две переменные Dept_id и Dept_name. Декларативная секция следует сразу за объявлением процедуры и не начинается с ключевого слова DECLARE. Для проверки вставки строки используется атрибут неявного курсора SQL%ROWCOUNT. В данном случае получим значение равное 1.
Вызов процедуры
BEGIN
add_dept;
END;
Функция создается следующим образом:
CREATE [OR REPLACE] FUNCTION имя_функции
[(аргумент1 [тип_параметра1] тип_данных1,
[(аргумент2 [тип_параметра2] тип_данных2, . . .)]
RETURN тип_данных
IS|AS
тело_функции;
Вызываемая функция просто вставляется в исполняемую секцию анонимного блока.
База данных Oracle используется в качестве процессора для Интернета. Тот факт, что Интернет функционирует 24 часа в сутки, является громадным достоинством Oracle по доступности к базам данных в любое время суток.
Вопросы
Назовите 5 основных продуктов ORACLE.
Основные блоки программ PL/SQL.
В чем отличие анонимных блоков от именованных.
Основные переменные PL/SQL.
Как производится инициализация переменных.
Назовите основные команды управления в PL/SQL.
Циклы программ.
Как производится однострочная выборка из базы данных.
Для чего используется понятие «курсор».