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


Предикат XMLEXISTS

>>-XMLEXISTS--(--константа-выражение-xquery--------------------->
 
>--+----------------------------------------------+--)---------><
   |                        .-,-------------------. |
   |          .-BY REF-.    V                     | |
   '-PASSING--+--------+----| аргумент-xquery --|-+-'
 
аргумент-xquery:
 
|--выражение-переменной-xquery--AS--идентификатор--+--------+-------|
                                                   '-BY REF-'
 

Предикат XMLEXISTS проверяет, возвращает ли выражение XQuery последовательность из одного или более пунктов.

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

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

BY REF

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

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

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

Преобразованное значение становится входным-значением-xml.

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

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

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

BY REF

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

Примечания

Предикат XMLEXISTS не может быть:

Предикат XMLEXISTS, вызывающий позапрос, должен быть ограничен правилами, которые ограничивают подзапросы.

Предикат XMLEXISTS может использоваться только в базе данных Unicode с единственным разделом базы данных (SQLSTATE 42997).

Пример

   SELECT c.custid FROM customer c
     WHERE XMLEXISTS ('$h/buyHistory/buyItem[ category = "fishing" ]'
       PASSING buyHistory AS "h")

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