DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Обоснование использования

Почему прагма обязательна для модульной функции, но не нужна для автономной? Для ответа на этот вопрос следует проанализировать взаимосвязи, существующие меж­ду заголовком и телом модуля. Напомним, что блоки PL/SQL, вызывающие модульную функцию, зависят только от заголовка модуля, но не от его тела. Более того, при создании вызывающего блока тело модуля может вообще не существовать. Поэтому компилятору PL/SQL необходимо указание, помогающее определить уровни строгости модульной функции, чтобы проверить корректность использования функции в вызывающем блоке. Всякий раз при последующей модификации (или при первом создании) тела модуля код функции проверяется на соответствие заданной прагме. Прагма проверяется во время компиляции, а не выполнения.

Совет
Система поддержки PL/SQL может проверить уровень строгости и на этапе выполнения, как это делается для автономных функций в версиях, предшествующих Oracle8. Однако применение прагмы означает, что системе поддержки не нужно проверять уровень на этапе выполнения, а это повышает производительность всей системы. К тому же гарантируется успешный вызов данной подпрограммы из SQL Поэтому предпочтительно использовать RESTRICT_REFERENCES в Oracle8, хотя это больше и не требуется.

 









jAntivirus