XMLEXISTS 述部

XMLEXISTS 述部は、XQuery 式が 1 つ以上の項目のシーケンスを戻すかどうかをテストします。

構文図を読む構文図をスキップするXMLEXISTS(xquery-expression-constant PASSING1BY REF,xquery-argument)
xquery-argument
構文図を読む構文図をスキップするxquery-context-item-expressionxquery-variable-expression2AS identifierBY REF
注:
  • 1 データ・タイプを DECFLOAT にすることはできません。
  • 2 式のデータ・タイプを DECFLOAT にすることはできません。
xquery-expression-constant
XQuery 式として解釈される SQL 文字ストリング定数を指定します。 定数ストリングは、データベース・コード・ページまたはセクション・コード・ページに変換されることなく、UTF-8 に直接変換されます。 XQuery 式は、オプション・セットの入力 XML 値を使用して実行し、XMLEXISTS 述部の結果を決定するためにテストされる出力シーケンスを戻します。 xquery-expression-constant の値は、空ストリングまたはブランク文字のストリングにすることはできません (SQLSTATE 10505)。
PASSING
入力値、およびそれらの値を xquery-expression-constant で指定された XQuery 式に渡す方法を指定します。 デフォルトでは、関数が呼び出された有効範囲内にあるすべての固有の列名が、 列の名前を変数名として使用して XQuery 式に暗黙的に渡されます。 指定の xquery-argument 内の identifier が有効範囲内の列名と一致する場合、 明示的な xquery-argument はその暗黙的な列をオーバーライドして XQuery 式に渡されます。
BY REF
デフォルトの受け渡しメカニズムを、データ・タイプ XML の任意の xquery-variable-expression の参照によると指定します。 XML 値を参照で渡す場合、XQuery の評価は、入力ノード・ツリーがあればそれを使用します。その場合は指定された入力式から直接、元のノードの ID および文書順序を含めすべてのプロパティーを保持したまま使用します。 2 つの引数が同じ XML 値を渡す場合、その 2 つの入力引数の間に含まれている何らかのノードに関係するノード ID 比較および文書順序比較は、同じ XML ノード・ツリー内のノードを参照する場合があります。

この節は、非 XML 値の受け渡しには影響を与えません。 非 XML 値は、XML へのキャスト中に値の新規コピーを作成します。

xquery-argument
row-xquery-expression-constant により指定された XQuery 式に渡される引数を指定します。 row-xquery-argument を XQuery 式で使用する方式は、引数が xquery-context-item-expression または xquery-variable-expression のどちらとして指定されているかによって異なります。
  • 結果の値は、XML 型である場合、input-xml-value になります。 NULL の XML 値は、XML の空シーケンスに変換されます。
  • 結果の値は、XML 型でない場合、XML データ・タイプにキャスト可能でなければなりません。 NULL 値は、XML の空シーケンスに変換されます。 変換される値は、input-xml-value になります。
xquery-expression-constant が評価されるとき、XQuery 変数は input-xml-value と等しい値、および AS 節により指定された名前で示されます。
xquery-context-item-expression
xquery-context-item-expression は、xquery-expression-constant で指定した XQuery 式の初期コンテキスト項目を指定します。 初期コンテキスト項目の値は、XML への xquery-context-item-expression キャストの結果です。 xquery-context-item-expression は、複数回指定してはなりません。
xquery-context-item-expression に一連の複数項目を指定してはなりません。 xquery-context-item-expression の結果が空ストリングである場合、XQuery 式は、初期コンテキスト項目に XML 空ストリングを設定して評価されます。
xquery-context-item-expression が指定されていないか、空ストリングである場合、XQuery 式の初期コンテキスト項目は未定義であり、XQuery 式は初期コンテキスト項目を参照してはなりません。 XQuery 変数はコンテキスト項目式に対しては作成されません。
xquery-context-expression が指定されていないか、xquery-context-expression から生じる input-xml-value が XML 空シーケンスである場合、初期コンテキスト項目は未定義です。 XQuery 式が初期コンテキスト項目を参照する場合は、XML 空シーケンスではない値を使って指定する必要があります。
xquery-variable-expression
実行中に xquery-expression-constant により指定された XQuery 式が使用できる値を持つ SQL 式を指定します。 式には、シーケンス参照 (SQLSTATE 428F9) または OLAP 関数 (SQLSTATE 42903) を含めることはできません。式のデータ・タイプを DECFLOAT にすることはできません。
AS identifier
xquery-variable-expression により生成された値が、xquery-expression-constant に XQuery 変数として渡されることを指定します。 変数名は identifier になります。 XQuery 言語の変数名に先行する先頭のドル記号 ($) は、identifier には含められません。 identifier は有効な XQuery 変数名でなければならず、XML NCName に制限されます。 identifier は、長さが 128 バイトを超えてはなりません。 同じ PASSING 節内の 2 つの引数が同じ identifier を使用することはできません (SQLSTATE 42711)。
BY REF
XML 入力値が参照により渡されるように指示します。 XML 値を参照で渡す場合、XQuery の評価は、入力ノード・ツリーがあればそれを使用します。その場合は指定された入力式から直接、元のノードの ID および文書順序を含めすべてのプロパティーを保持したまま使用します。 2 つの引数が同じ XML 値を渡す場合、その 2 つの入力引数の間に含まれている何らかのノードに関係するノード ID 比較および文書順序比較は、同じ XML ノード・ツリー内のノードを参照する場合があります。 BY REF が xquery-variable-expression に続いて指定されない場合、XML 引数は、PASSING キーワードに続く構文により提供されるデフォルトの受け渡しメカニズムによって渡されます。 このオプションは、非 XML 値に指定することはできません。 非 XML 値が渡される場合、値は XML に変換されます。このプロセスによりコピーが作成されます。

XMLEXISTS 述部は、以下のものにすることはできません。
  • JOIN 演算子または MERGE ステートメントと関連した ON 節の一部 (SQLSTATE 42972)
  • CREATE INDEX EXTENSION ステートメントの GENERATE KEY USING または RANGE THROUGH 節の一部 (SQLSTATE 428E3)
  • CREATE FUNCTION (外部スカラー) ステートメント内の FILTER USING 節の一部、または CREATE INDEX EXTENSION ステートメント内の FILTER USING 節の一部 (SQLSTATE 428E4)
  • チェック制約の一部、または列生成式の一部 (SQLSTATE 42621)
  • group-by 節の一部 (SQLSTATE 42822)
  • 列関数の引数の一部 (SQLSTATE 42607)

副照会に関係する XMLEXISTS 述部は、副照会を制限するステートメントにより制限されることがあります。

   SELECT c.cid FROM customer c
     WHERE XMLEXISTS('$d/*:customerinfo/*:addr[ *:city = "Aurora" ]'
       PASSING info AS "d")