Функции похожи на процедуры. И те, и другие получают некоторые параметры того или иного вида (параметры описываются ниже). Функции и процедуры — это различные формы блоков PL/SQL, в состав каждого из которых могут входить раздел объявлений, выполняемый раздел и раздел исключительных ситуаций. Как функции, так и процедуры можно хранить в базе данных или объявлять в блоке (процедуры и функции, не хранимые в базе данных, рассматриваются в главе 10). Однако вызов процедуры является оператором PL/SQL, в то время как вызов функции — это часть некоторого выражения. Ниже приведен пример вызова функции, возвращающей TRUE, если указанная учебная группа заполнена более чем на 80%, и FALSE в противном случае.

Функция AiiicstFull возвращает логическое значение. Ниже приводится блок PL/SQL, в котором вызывается эта функция. Обратите внимание на то, что вызов функции не является оператором — он представляет собой фрагмент условного оператора IF, расположенного внутри цикла.

Внимание
Процедура DBMS_OUTPUT. PUTJJNE будет выводить свой аргумент на экране в SQL*Plus при условии, что используется режим set serveroutput on (см. главу 2).
Синтаксис функций Синтаксис, применяемый при создании хранимой функции, похож на синтаксис создания процедуры:

где имя_функции — это имя функции, аргумент и тип аналогичны аргументу и типу, указываемым при создании процедуры, возвращаемий_тип— это тип значения, возвращаемого функцией, а тело_функции - блок PL/SQL, содержащий программный код данной функции. Для тела функции применимы те же правила, что и для тела процедуры. Например, имя функции можно при желании указать после закрывающего END.
Как и для процедур, список аргументов необязателен. В этом случае ни при описании функции, ни при ее вызове круглые скобки указывать не нужно. Однако необходим тип, возвращаемый функцией, так как вызов функции является частью некоторого выражения. Тип функции используется для определения типа выражения, содержащего вызов этой функции.
Внимание.
Как и для процедур, в Огас1е8\ можно использовать ключевое w слово NOCOPY и предложение AUTHID.
Оператор RETURN Внутри тела функции оператор RETURN используется для возврата управления программой в среду с некоторым значением. Общий синтаксис оператора RETURN:
RETURN выражение;
где выражение — это возвращаемое значение. Значение выражения преобразуется в тип, указанный в команде RETURN при описании функции,
если, конечно, это значение уже не имеет данный тип. При выполнении оператора RETURN управление программой сразу же возвращается в вызывающую среду.
В функции может быть несколько операторов RETURN, хотя выполняться будет только один из них. Отсутствие в функции оператора RETURN является ошибкой. Ниже приведен пример использования в одной функции нескольких операторов RETURN. Хотя в этой функции пять различных операторов RETURN, выполняется лишь один из них, какой именно — зависит от заполнения учебной группы, указанной при помощи p_Pepartment и p_Course.


При использовании оператора RETURN в функции с ним должно быть связано некоторое выражение. Однако RETURN можно применять и в процедуре. В этом случае аргументы, приводящие к немедленной передаче управления в вызывающую среду, не указываются. Текущие значения формальных параметров, описанных как OUT или IN OUT, присваиваются фактическим параметрам, и выполнение программы продолжается с оператора, следующего за вызовом процедуры (см. ниже).
| < Предыдущая | Следующая > |
|---|


