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


Табличная функция XMLTABLE

>>-XMLTABLE--(--+--------------------------------+--константа-выражение-xquery-для-строки-->
                '-объявление-пространств-имен--,-'
 
>--+---------------------------------------------------+--------->
   |                      .-,------------------------. |
   |          .-BY REF-.  V                          | |
   '-PASSING--+--------+----| аргумент-строки-xquery |-+-'
 
            .-,--------------------------------------------.
            V                                              |
>--COLUMNS----| регулярное-определение-столбца-xml-table |-+--)--><
 
аргумент-строки-xquery:
 
|--выражение-переменной-xquery--AS--идентификатор--+--------+-------|
                                                   '-BY REF-'
 
регулярное-определение-столбца-xml-table:
 
|---имя-столбца--тип-данных--+--------+--+---------------+--->
                             '-BY REF-'  '-фраза-default-'  

>----+----------------------------------------------+----|
     '-PATH--константа-выражение-xquery-для-столбца-'

Схема - SYSIBM. Имя функции не может задаваться как квалифицированное имя.

Функция XMLTABLE возвращает в виде таблицы результат вычисления выражения XQuery, возможно, используя заданные входные аргументы как переменные XQuery. Каждый пункт последовательности в результирующей последовательности строчного выражения XQuery представляет строку в результирующей таблице.

объявление-пространств-имен

Задает одно или более объявлений пространств имен XML, которые становятся частью сатического контекста константы-выражения-xquery-для-строки и константы-выражения-xquery-для-столбца. Набор статически известных пространств имен для выражений XQuery, которые являются аргументами для XMLTABLE является кобминацией предустановленного набора статически известных пространств имен и объявлений пространств имен, заданных в этой фразе. Пролог XQuery в выражении XQuery может замещать эти пространства имен.

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

константа-выражение-xquery-для-строки

Задает строковую константу SQL, которая интерпретируется как выражение XQuery с поддерживаемым синтаксисом языка XQuery. Строковая константа преобразуется непосредственно в UTF-8 без преобразования в кодовую страницу базы данных или секции. Выражение XQuery выполняется с использованием необязательного набора входных XML-значений и возвращает выходную последовательность XQuery, где для каждого пункта последовательности генерируется строка. Значение для константы-выражения-xquery-для-строки не должно быть пустой строкой или строкой пробелов (SQLSTATE 10505).

PASSING

Задает входные значения и способ, которым эти значения передаются в выражение XQuery заданное константой-выраженим-xquery-для-строки.

BY REF

Задает, что все входные XML-аргументы по умолчанию передаются по ссылке. Если XML-значения передаются по ссылке, вычисление XQuery использует входные деревья узлов, если они есть, непосредственно из заданных входных выражений, сохраняя все свойства, включая исходную идентификацию узлов и порядок документа. Если два аргумента передают одно и то же XML-значение, сравнения идентификации узлов и порядка документа, включающее некоторые узлы, общие для двух входных аргументов, могут ссылаться на узлы в одном дереве узлов XML.

Эта фраза не влияет на то, как передаются не-XML значения. Для не-XML значений создается новая копия значения при его преобразовании в XML.

аргумент-строки-xquery

Задает аргумент, который передается в выражение XQuery, заданное константой-выражениеи-xquery-для-строки. Аргумент задает значение и способ, способ передачи значения. Аргумент включает SQL-выражение, которое вычисляется. Перед передачей результата в выражение XQuery.

Когда константа-выражение-xquery-для-строки вычисляется, переменная XQuery, представляется со значением, равным входному-xml-значению и именем, заданным фразой AS.

выражение-переменной-xquery

Задает выражение SQL, значение которого доступно в выражении XQuery, заданном константрй-выражением-xquery-для-строки во время вычисления. Выражение не может содержать выражения NEXT VALUE, выражения PREVIOUS VALUE (SQLSTATE 428F9) или функций OLAP (SQLSTATE 42903).

AS идентификатор

Задает, что значение, генерируемое выражением-переменной-xquery будет передаваться в константу-выражение-xquery-для-строки как переменная XQuery. Имя переменной будет идентификатор. Ведущий знак доллара ($), который предшествует именам переменных в языке XQuery, не включается в идентификатор. Идентификатор должен быть допустимым именем переменной XQuery и ограничивается правилами для XML NCName (SQLSTATE 42634). Идентификатор не должен быть больше 128 байт длиной. Два аргумента в одной фразе PASSING не могут использовать один и тот же идентификатор (SQLSTATE 42711).

BY REF

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

Если BY REF следом за выражением-переменной-xquery не задано, XML-аргументы передаются по механизму передачи по умолчанию, который обеспечивается для синтаксической конструкции, следующей за ключевым словом PASSING. Эта опция не может задаваться для не-XML значений. Если передается не-XML значение, значение преобразуется в XML; этот процесс создает копию.

COLUMNS регулярное-определение-столбца-xml-table

Задает выходные столбцы результирующей таблицы, включая имя столбца, тип данных, механизм передачи XML и выражение XQuery для выделения значения из пункта последовательности для строки.

имя-столбца

Задает имя столбца в результирующей таблице. Имя не может быть квалифицированным и одно и то же имя не может использоваться более чем для одного столбца таблицы (SQLSTATE 42711).

тип-данных

Задает тип данных столбца. Синтаксис и описание доступных типов см. в описании оператора CREATE TABLE. Тип-данных может использоваться в XMLTABLE, если поддерживается XMLCAST из типа данных XML в заданный тип-данных.

BY REF

Показывает, что XML -значения возвращаются по ссылке для столбцов типа XML. По умолчанию, XML-значения возвращаются BY REF. Если XML-значения возвращаются по ссылке, XML-значение включает деревья узлов, если они есть, непосредственно из результирующих значений, сохраняя все свойства, включая исходную идентификацию узлов и порядок документа. Эта опция не может задаваться для столбцов не-XML (SQLSTATE 42636). Когда обрабатывается столбец не-XML, , значение преобразуется в XML; этот процесс создает копию.

фраза-default

Задает значение по умолчанию для столбца. Синтаксис и описание фразы-default см. в описании оператора CREATE TABLE. Для результирующих солбцов XMLTABLE значение по умолчанию применяется, если обработка выражения XQuery, содержащегося в константе-выражении-xquery-для-столбца, возвращает пустую последовательность.

PATH константа-выражение-xquery-для-столбца

Задает строковую константу SQL, которая интерпретируется как выражение XQuery с поддерживаемым синтаксисом языка XQuery. Строковая константа преобразуется непосредственно в UTF-8 без преобразования в кодовую страницу базы данных или секции. Константа-выражение-xquery-для-столбца задает выражение XQuery, которое определяет значение в столбце с учетом пункта, который является результатом вычисления выражения XQuery в константе-выражении-xquery-для-строки. Получая пункт из результата обработки константы-выражения-xquery-для-строки как переданный извне контекстный пункт, константа-выражение-xquery-для-столбца вычисляется, возвращая выходную последовательность. Значение с столбце определяется на основе этой выходной последовательности следующим образом.

Значение для константы-выражения-xquery-для-столбца не должно быть пустой строкой или строкой пробелов (SQLSTATE 10505). Если эта фраза не задана, то выражение XQuery по умолчанию - просто имя-столбца.

Если вычисление любого выражения XQuery дает ошибку, то функция XMLTABLE возвращает ошибку XQuery (SQLSTATE class '10').

Примечания:

  1. Поддержка в базах данных не-Unicode и базах данных с многими разделами: XMLTABLE не поддерживается (SQLSTATE 42997).

Примеры:


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