DeepEdit!

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

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

Функции

Функция - это модуль, возвращающий значение. В отличие от вызова процедуры, являющегося независимым исполняемым оператором, вызов функции может существовать только как часть исполняемого оператора (то есть он может быть, например, элементом выражения или значением, присваиваемым по умолчанию при объявлении переменной).
Функция возвращает значение, которое, естественно, относится к какому-то типу данных. Функция может использоваться в PL/SQL-опе- раторе вместо выражения, имеющего тот же тип данных, что и возвращаемое функцией значение.
Функции чрезвычайно важны при создании модульных конструкций. Например, любое бизнес-правило или формула в вашем приложении должны быть помещены в функции. Любой запрос, возвращающий единственную строку, также следует определять в функции, с тем чтобы обеспечить простой и надежный способ его повторного использования.
Некоторые разработчики предпочитают полагаться не на функции, а на процедуры, возвращающие информацию через список параметров. Если вы относитесь к их числу, то не забудьте проверить, что все ваши бизнес-правила, формулы и однострочные запросы «спрятаны» в процедуры.
Если в приложении определено и используется мало функций, то его, скорее всего, будет сложно поддерживать и совершенствовать.
Структура функции
Структура функции совпадает со структурой процедуры, единственное отличие состоит в том, что функция включает в себя еще предложение RETURN:

где элементы имеют следующее назначение: схема
Имя схемы, которой принадлежит функция (необязательный параметр). По умолчанию функция принадлежит схеме текущего пользователя. Для создания процедуры в другой схеме текущему пользователю потребуются соответствующие привилегии.
имя
Имя функции, которое указывается сразу после ключевого слова
FUNCTION.
параметры
Необязательный список параметров, которые могут быть определены для передачи информации как в функцию, так и из нее обратно в вызывающую программу.
тип_возвращаемых_данных
Тип данных значения, возвращаемого функцией, который обязательно должен быть указан в заголовке функции.
AUTHID предложение
Определяет, с какими правами будет исполняться процедура: с правами ее владельца (создателя) или же с правами вызывающего пользователя. Принято говорить о двух моделях исполнения: с правами владельца и с правами вызывающего.
DETERMINISTIC предложение
Подсказка оптимизатору, позволяющая системе использовать сохраненную копию возвращенного функцией результата (при его наличии). Оптимизатор запроса определяет, следует ли выбрать сохраненную копию или же вызвать функцию повторно.
PARALLEL_ENABLE предложение
Подсказка оптимизатору, разрешающая параллельное выполнение функции при вызове из оператора SELECT.
PIPELINED предложение
Указывает, что результаты табличной функции должны возвращаться построчно с помощью команды PIPE ROW.
операторы объявления
Объявления локальных идентификаторов для данной функции. Если вы ничего не объявляете, то операторы IS и BEGIN будут следовать непосредственно друг за другом.
исполняемые операторы
Операторы, которые функция исполняет при вызове. После ключевого слова BEGIN до ключевых слов END или EXCEPTION должен быть указан хотя бы один исполняемый оператор.
операторы обработки исключений
Необязательные обработчики исключений для функции. Если вы не обрабатываете явно никакие исключения, то пропустите ключевое слово EXCEPTION и завершите раздел исполнения ключевым словом END.
 









jAntivirus