Ключевое слово PRAGMA
происходит из греческого языка, где оно означает «действие» или «операцию». В других языках программирования этим ключевым словом обычно помечаются строки исходного кода с описанием действий, которые должны быть предприняты компилятором. По сути, ключевое слово PRAGMA
является директивой, которая передает некоторую управляющую информацию компилятору, но не преобразуется непосредственно в исполняемый код.
Ключевое слово PRAGMA
в PL/SQL имеет следующий синтаксис:
PRAGMA директива;
Компилятор PL/SQL позволяет размещать такие директивы в любой точке раздела объявлений, но для некоторых директив устанавливаются дополнительные требования к размещению. PL/SQL поддерживает следующие директивы:
-
AUTONOMOUS_TRANSACTION
— приказывает исполнительному ядру PL/SQL выполнить сохранение или откат любых изменений, внесенных в базу данных в текущем блоке, без воздействия на главную или внешнюю транзакцию. EXCEPTION_INIT
— приказывает компилятору связать конкретный номер ошибки с идентификатором, объявленным в программе как исключение. Идентификатор должен соответствовать правилам объявления исключений.RESTRICT_REFERENCES
— задает для компилятора уровень чистоты программного пакета (отсутствия действий, вызывающих побочные эффекты).SERIALLY_REUSABLE
— сообщает исполнительному ядру PL/SQL, что данные уровни пакета не должны сохраняться между обращениями к ним.
Следующий блок демонстрирует применение директивы EXCEPTION_INIT
для назначения имени встроенному исключению. Если этого не сделать, то исключение будет иметь только номер.
DECLARE no_such_sequence EXCEPTION; PRAGMA EXCEPTION_INIT (no_such_sequence, –2289); BEGIN ... EXCEPTION WHEN no_such_sequence THEN q$error_manager.raise_error ('Sequence not defined'); END;