Объявления функций
Объявление функции с именем имя-функции (типа QName) имеет следующий вид:
declare function имя-функции($имя-параметра-1 as тип-параметра-1, …)
as тип-возвращаемого-значения
{
тело-функции
};
Если имя функции не имеет префикса, имя функции считается заданным в пространстве имен по умолчанию. Для каждого параметра задается его имя и тип. Если ключевое слово as и тип-параметра не задан, либо не задано ключевое слово as и тип-возвращаемого-значения, по умолчанию принимается тип item()*, т.е. произвольная последовательность. После типа параметра или возвращаемого значения может следовать:
· символ "?", означающий, что данный параметр может быть задан, а может быть не задан;
· символ "*", означающий, что данный параметр может быть задан 0 и более раз;
· символ "+", означающий, что данный параметр может быть задан 1 и более раз.
В теле-функции задаются выражения (как правило, конструкторы), реализующие алгоритм функции.
Функции в XQuery могут быть рекурсивными, т.е. в теле функции может быть задан вызов самой функции.
В объявлениях функций не должно быть двух и более функций с одинаковыми расширенными именами и одинаковым количеством параметров.
Вызов функции имеет следующий вид:
имя-функции(аргумент-1, аргумент-2,…)
С помощью следующего объявления функция может быть задана как внешняя:
declare function имя-функции($имя-параметра-1 as тип-параметра-1, …)
as тип-возвращаемого-значения external;
В этом случае используется функция, заданная в импортируемом модуле. Количество параметров и их типы, а также тип возвращаемого значения для внешней и импортируемой функции должны совпадать.
Примеры объявления и использования функций приведены ниже.
Дата добавления: 2015-03-19; просмотров: 558;