Оператор function объявляет подпрограмму (функцию). В отличие от оператора create procedure оператор function только описывает функцию, а не создаёт её как объект базы данных. Объявление функции может располагаться только внутри тела хранимой процедуры или триггера. Объявление функции должно быть до первого её использования. Вложенные объявления функции не допускаются.
Внутри функции могут быть объявлены переменные. Их имена не должны совпадать с именами параметров функции. Все переменные, которые будут объявлены внутри функции, будут доступны только внутри этой функции. Имена объявляемых переменных могут совпадать с глобальными переменными, в этом случае глобальные переменные не будут доступны из функции.
Все функции должны возвращать некоторое значение. Возвращаемое значение задаётся оператором return. Если возвращаемое значение не указано или оператор return не встретился при выполнении функции, то функция возвращает число 0. Вызывающая функция вправе проигнорировать возвращаемое значение.
Задает имя функции. Имя функции должно содержать буквы и цифры, должно начинаться с буквы и должно быть не длиннее 31 символа. Имена процедур должны быть уникальными внутри процедуры (внутри триггера) и не должны совпадать с зарезервированными словами.
Параметры
Необязательная конструкция, которая задает имена параметров и тип вызова. Все параметры должны иметь уникальные имена. Конструкция inout используется для выходных параметров и задает вызов по ссылке. Конструкция inout эквивалентна конструкции out и также задает вызов по ссылке. Максимальное количество параметров функции – 31.
Тело_функции
Тело функции описывает те действия, которые необходимо выполнить при вызове функции.
Пример:
// вывести на консоль содержимое массива // с указанием номера элемента