XMLDOCUMENT スカラー関数

XMLDOCUMENT 関数は、XQuery 文書ノードを 1 つ持つ XML 値を戻します。 これにはゼロ個以上の子ノードが含まれます。

Read syntax diagramSkip visual syntax diagramXMLDOCUMENT(XML-expression )

スキーマは SYSIBM です。 関数名を修飾名で指定することはできません。

XML 式
XML 値を戻す式。 XML 値のシーケンス項目が属性ノードであってはなりません (SQLSTATE 10507)。

結果のデータ・タイプは XML です。 XML-expression の結果が NULL になる可能性がある場合、結果も NULL になる可能性があります。入力値が NULL であれば、結果も NULL 値になります。

その結果生成される文書ノードの子は、以下のステップの説明に従って構成されます。 入力式はノードのシーケンスまたは原子値です。 これはこのステップで内容シーケンスとして参照されます。
  1. 内容シーケンスに文書ノードが含まれる場合、内容シーケンスの文書ノードはその文書ノードの子によって置き換えられます。
  2. 内容シーケンス内の 1 つ以上の原子値の各隣接シーケンスは、各原子値をストリング (隣接する値の間にブランク文字を 1 つ挿入したもの) にキャストした結果を含むテキスト・ノードで置き換えられます。
  3. 内容シーケンスの各ノードごとにノードの新規ディープ・コピーが構成されます。 ノードのディープ・コピーとは、そのノードをルートとするサブツリー全体のコピーのことです (これにはノードそのものとその子孫が含まれます)。 コピーされた各ノードは、新しいノード ID を持ちます。
  4. 内容シーケンス内のノードは、新規文書ノードの子になります。
XMLDOCUMENT 関数は、XQuery が計算する文書コンストラクターを効果的に実行します。 以下の関数があるとします。
XMLQUERY('document {$E}' PASSING BY REF XML-expression AS "E")
これは、以下と同じ意味になります。
XMLDOCUMENT( XML-expression )
ただし、XML-expression が NULL であり、XMLQUERY が空シーケンスを戻す場合 (XMLDOCUMENT の場合は NULL 値) は例外です。

構成した文書を XML 列に挿入します。
   INSERT INTO T1 VALUES(
     123, (
       SELECT XMLDOCUMENT(
         XMLELEMENT(
           NAME "Emp", E.FIRSTNME || ' ' || E.LASTNAME, XMLCOMMENT(
             'This is just a simple example'
           )
         )
       )
       FROM EMPLOYEE E
       WHERE E.EMPNO = '000120'
     )
   )