Объявление пакета в SQL, понятие уровней строгости
1. Понятие пакета
В СУБД Oracle, начиная с 7 версии, предусмотрена возможность создания пакетов, представляющих по существу коллекцию функций, процедур, констант, пользовательских типов данных, переменных, курсоров, исключительных ситуаций. Пакет включает спецификацию пакета и его тело. Объекты, объявленные в спецификации, являются общедоступными. Тело пакета включает реализацию общедоступных объектов, а также объявление и реализацию приватных объектов. Пакет можно сделать невыгружаемым из памяти. Помещая в пакет наиболее часто используемые процедуры и функции, можно существенно повысить быстродействие системы.
2. Объявление пакета
CREATE PACKAGE <имя пакета> {IS|AS}
<объявление общедоступных объектов>
END <имя пакета>
3. Создание тела пакета
CREATE PACKAGE BODY <имя пакета> {IS|AS} <реализации функций | процедур | курсоров>
BEGIN
<операторы инициализации>
END <имя пакета>
4. Понятие уровней строгости
Для каждой хранимой функции, объявленной в пакете, необходимо сразу после объявления указать уровень строгости (или чистоты) с помощью функции PRAGMA RESTRICT_REFERENCES в спецификации пакета. Указание уровня строгости для функции производится так:
PRAGMA RESTRICT_REFERENCES(<имя функции>, WNPS[, RNDS,…])
Примечание:
PRAGMA – директива компилятору.
RESTRICT_REFERENCES – один из видов прагмы, обеспечивающая уровень чистоты или строгости функции.
5. Уровни строгости функций
• WNPS – функция не изменяет состояния пакета записью глобальных переменных, однако может сохранять значения в локальных переменных.
• RNPS – функция не читает глобальные переменные в пакете, но может читать из локальных переменных.
• WNDS – функция не изменяет данные, хранящиеся в БД.
• RNDS – функция не читает данные в БД.