Тело хранимой функции
После ключевого слова AS
следует тело хранимой функции.
После ключевого слова AS
следует тело хранимой функции.
В необязательной секции <declarations> описаны локальные переменные функции, именованные курсоры и подпрограммы (подпроцедуры и подфункции). Локальные переменные подчиняются тем же правилам, что и входные параметры функции в отношении спецификации типа данных.Подробности вы можете посмотреть в главе “Процедурный язык PSQL”в разделах DECLARE VARIABLE иDECLARE CURSOR,DECLARE PROCEDURE,DECLARE FUNCTION.
После необязательной секции деклараций обязательно следует составной оператор.Составной оператор состоит из одного или нескольких PSQL операторов, заключенных между ключевыми словами BEGIN
и END
.Составной оператор может содержать один или несколько других составных операторов.Вложенность ограничена 512 уровнями.Любой из BEGIN … END
блоков может быть пустым, в том числе и главный блок.
Хранимая функция может быть расположена во внешнем модуле.В этом случае вместо тела функции указывается место расположения функции во внешнем модуле с помощью предложения EXTERNAL NAME
.Аргументом этого предложения является строка, в которой через разделитель указано имя внешнего модуля, имя функции внутри модуля и определённая пользователем информация.В предложении ENGINE
указывается имя движка для обработки подключения внешних модулей.В Firebird для работы с внешними модулями используется движок UDR.После ключевого слова AS
может быть указан строковый литерал — "тело" внешней функции, оно может быть использовано внешним модулем для различных целей.
Warning
|
Не следует путать внешние функции, объявленные как |
ALTER FUNCTION
Изменение существующей хранимой функции.
DSQL
ALTER FUNCTION funcname [(<inparam> [, <inparam> ...])] RETURNS <type> [COLLATE collation] [DETERMINISTIC] <routine-body> Подробнее см. CREATE FUNCTION.
Оператор ALTER FUNCTION
позволяет изменять состав и характеристики входных параметров, типа выходного значения, локальных переменных, именованных курсоров, подпрограмм и тело хранимой функции.Для внешних функций (UDR) вы можете изменить точку входа и имя движка.Внешние функции, объявленные как DECLARE EXTERNAL FUNCTION
, так же известные как UDF, невозможно преобразовать в PSQL функции и наоборот.После выполнения существующие привилегии и зависимости сохраняются.
Note
|
Будьте осторожны при изменении количества и типов входных параметров хранимых функций.Существующий код приложения может стать неработоспособным из-за того, что формат вызова функции несовместим с новым описанием параметров.Кроме того, PSQL модули, использующие изменённую хранимую функцию, могут стать некорректными.Информация о том, как это обнаружить, находится в приложении Поле RDB$VALID_BLR. |
Warning
|
Если у вас уже есть внешняя функция в Legacy стиле ( |