XMLDOCUMENT スカラー関数
XMLDOCUMENT 関数は、XQuery 文書ノードを 1 つ持つ XML 値を戻します。 これにはゼロ個以上の子ノードが含まれます。
スキーマは SYSIBM です。 関数名を修飾名で指定することはできません。
- XML 式
- XML 値を戻す式。 XML 値のシーケンス項目が属性ノードであってはなりません (SQLSTATE 10507)。
結果のデータ・タイプは XML です。 XML-expression の結果が NULL になる可能性がある場合、結果も NULL になる可能性があります。入力値が NULL であれば、結果も NULL 値になります。
その結果生成される文書ノードの子は、以下のステップの説明に従って構成されます。 入力式はノードのシーケンスまたは原子値です。
これはこのステップで内容シーケンスとして参照されます。
- 内容シーケンスに文書ノードが含まれる場合、内容シーケンスの文書ノードはその文書ノードの子によって置き換えられます。
- 内容シーケンス内の 1 つ以上の原子値の各隣接シーケンスは、各原子値をストリング (隣接する値の間にブランク文字を 1 つ挿入したもの) にキャストした結果を含むテキスト・ノードで置き換えられます。
- 内容シーケンスの各ノードごとにノードの新規ディープ・コピーが構成されます。 ノードのディープ・コピーとは、そのノードをルートとするサブツリー全体のコピーのことです (これにはノードそのものとその子孫が含まれます)。 コピーされた各ノードは、新しいノード ID を持ちます。
- 内容シーケンス内のノードは、新規文書ノードの子になります。
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'
)
)