КаталогИндекс раздела
НазадСодержаниеВперед

Вызовы функций

Вызов функции состоит из QName, за которым в скобках следует список из нуля или более выражений, которые называются аргументами. XQuery в DB2 поддерживает вызовы встроенных функций XQuery и специфичных функций DB2.

Встроенные функции XQuery находятся в пространстве имен http://www.w3.org/2005/xpath-functions, которое привязано к префиксу fn. Специфические функции DB2 находятся в пространстве имен http://www.ibm.com/xmlns/prod/db2/functions, которое привязано к префиксу db2-fn. Если QName в вызове функции не имеет префикса пространства имен, функция должна быть в пространстве имен по умолчанию. Для функций пространством имен по умолчанию является пространство имен встроенных функций XQuery (привязанных к префиксу fn), кроме тех случаев, когда пространство имен замещается объявлением в прологе.

Важно: Поскольку аргументы вызова функции разделены запятыми, вы должны использовать скобки, чтобы заключать в них аргументы-выражения, содержащие оператор-запятую.

Следующие шаги поясняют процесс, который XQuery в DB2 использует для вычисления функций:

  1. XQuery в DB2 вычисляет каждое выражение, которое передается как аргумент в вызов функции и возвращает значение каждого выражения.
  2. Возвращенное значение для каждого аргумента преобразуется в тип данных, который ожидается для этого аргумента. Если в качестве аргумента ожидается атомарное значение или последовательность атомарных значений, XQuery в DB2 использует следующие правила для преобразования значения аргумента в ожидаемый тип:
  3. Функция вычисляется с использованием преобразованных значений аргументов. Результатом вызова функции является либо экземпляр объявленного для функции возвращаемого типа, либо ошибка.

Примеры

Вызов функции со строковым аргументом: Следующий вызов функции принимает аргумент типа xs:string и возвращает значение типа xs:string в котором все символы в верхнем регистре:

fn:upper-case($ns1_customerinfo/ns1:addr/@country)

В этом примере аргумент, который передается в функцию fn:upper-case является выражением маршрута. Когда функция вызывается, выражение маршрута вычисляется и результирующая последовательность узлов атомизируется. Каждое атомарное значение в последовательности преобразуется в ожидаемый тип, xs:string. Функция вычисляется и возвращает последовательность атомарных значений типа xs:string.

Вызов функции с аргументом-последовательностью: Следующая функция принимает в качестве единственного аргумента последовательность, (1, 2, 3).

fn:max((1, 2, 3))

Поскольку функция fn:max ожидает единственный аргумент, которым является последовательность атомарных значений, необходимы вложенные скобки. Возвращаемое значение - 3.


НазадСодержаниеВперед
КаталогИндекс раздела