Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-05.doc
Скачиваний:
6
Добавлен:
12.05.2015
Размер:
645.12 Кб
Скачать

5.1.2.1.1.2. Объявления переменных

Объявление переменнойс именемимя-переменной(типаQName), типом, определенным втипе-переменнойи начальным значением, задаваемымвыражением, имеет следующий вид:

declare variable $имя-переменнойasтип-переменной:=выражение;

Если заданы ключевое слово asитип-переменной, то создается переменная заданного типа. Если эти компоненты не заданы тип переменной определяется из типа результата вычислениявыражения.Выражениеможет содержать объявленные ранее переменные.

Переменные, объявленные без префикса пространства имен, не определены ни в одном пространстве имен и могут быть заданы только в главном модуле.

Переменная, объявленная в другом, импортируемом модуле, должна быть объявлена как внешняя переменная следующим образом:

declare variable $имя-переменнойasтип-переменнойexternal;

Если в этом объявлении задан тип переменной, он должен совпадать с типом переменной в импортируемом модуле.

Примеры задания переменных:

1. declare variable $aas xs:integer:=17;– задана целая переменная$aс начальным значением17.

2. declare variable $str:="abc";– задана строковая переменная$aс начальным значением"abc"(тип переменной определяется в результате вычисления выражения).

3. declare variable $math:pi as xs:double external; – задана переменная с двойной точностью $math:pi, объявленная в импортируемом модуле.

5.1.2.1.1.3. Объявления функций

Объявление функциис именемимя-функции(типаQName) имеет следующий вид:

declare functionимя-функции($имя-параметра-1asтип-параметра-1, …)

asтип-возвращаемого-значения

{

тело-функции

};

Если имя функции не имеет префикса, имя функции считается заданным в пространстве имен по умолчанию. Для каждого параметра задается его имя и тип. Если ключевое слово asитип-параметране задан, либо не задано ключевое словоasитип-возвращаемого-значения, по умолчанию принимается типitem()*, т.е. произвольная последовательность. После типа параметра или возвращаемого значения может следовать:

  • символ "?", означающий, что данный параметр может быть задан, а может быть не задан;

  • символ "*", означающий, что данный параметр может быть задан 0 и более раз;

  • символ "+", означающий, что данный параметр может быть задан 1 и более раз.

В теле-функциизадаются выражения (как правило, конструкторы), реализующие алгоритм функции.

Функции в XQuery могут быть рекурсивными, т.е. в теле функции может быть задан вызов самой функции.

В объявлениях функций не должно быть двух и более функций с одинаковыми расширенными именами и одинаковым количеством параметров.

Вызов функции имеет следующий вид:

имя-функции(аргумент-1, аргумент-2,…)

С помощью следующего объявления функция может быть задана как внешняя:

declare functionимя-функции($имя-параметра-1asтип-параметра-1, …)

asтип-возвращаемого-значения external;

В этом случае используется функция, заданная в импортируемом модуле. Количество параметров и их типы, а также тип возвращаемого значения для внешней и импортируемой функции должны совпадать.

Примеры объявления и использования функций приведены ниже.

5.1.2.1.1.4. Объявления опций

Объявления опций имеют следующий вид:

declare optionимя-опции "строковый-литерал";

Это объявление определяет опцию с заданным именем и строковым значением. Набор опций и их действия определяется используемым обработчиком запросов XQuery.

Соседние файлы в папке Лекции