Пакеты (Packages)

Пакеты позволяют объединить процедуры и функции в один автономный модуль.
Обычно пакеты состоят из двух компонентов: спецификации (интерфейс) и тела (реализации интерфейса).

Спецификация пакета содержит информацию о пакете, кроме того, в ней перечисляются все имеющиеся в пакете процедуры и функции. Обычно спецификация не содержит кода, код помещается в теле пакета. Процедуры и функции, перечисленные в спецификации доступны для просмотра, а реализация скрыта.


Создание спецификации пакета

CREATE [OR REPLACE] PACKAGE package_name
IS | AS
спецификация пакета
END имя_пакета;

спецификация пакета – список доступных процедур и функций (вместе со всеми переменными, определениями типов и курсорами).


Создание тела пакета

CREATE [OR REPLACE] PACKAGE BODY имя_пакета
IS | AS
тело_пакета
END имя пакета


Вызов процедур и функций в пакете

При вызове входящих в пакет процедур и функций, следует включать в выхов имя пакета.

package_name.stored_procedure([parameters]);


Получение информации о процедурах и функциях из пакета

SELECT ojbect_name, aggregate, parallel
FROM user_procedures
WHERE objectt_name = 'package';


Удаление пакета

DROP PACKAGE  package_name;