機能
XMLQUERY関数は、XQuery式の評価結果であるXMLデータを返却する関数です。
記述形式
参照項番
値式 → “2.10 値式”
一般規則
XMLQUERY関数のデータ型は、BLOB型です。
XMLQUERY関数は、XQuery式の評価結果であるシーケンスの項目を、先頭から順に連結したXMLデータを返します。
XQuery式の評価結果が空シーケンスである場合、XMLQUERY関数はNULLを返します。
XMLQUERY関数の結果は31キロバイト以下であることが必要です。31キロバイトを超えた場合はエラーになります。
以下の値式として、XMLQUERY関数を指定することはできません。
問合せ式で選択リストにDISTINCTを指定した場合の選択リストに指定する値式(ただし、問合せ指定の結果がBLOB型でないならば、エラーにはなりません)
GROUP BY句に指定したグループ化関数の引数に指定する値式
ORDER BY句に指定する値式
ビュー表の問合せ指定に指定する値式
XMLQUERY関数のPASSING句に指定する値式
XMLEXISTS述語のPASSING句に指定する値式
副問合せに指定する値式
被トリガSQL文に指定する値式
列の定義長の合計が32キロバイト以上の表を指定したSQL文に指定する値式
OBJECT構造の表を指定したSQL文に指定する値式
XMLQUERY関数を問合せ指定に指定した場合、並列検索は行いません。並列検索が指定されても無視します。
XMLデータの文字列定数で指定します。
参照
XQuery式に指定する検索式の詳細は、“XQueryリファレンス”を参照してください。
注意
XQuery式に指定する検索式は文字列定数で表現するため、検索式の記述内容に' (シングルクォーテーション)を指定することはできません。' (シングルクォーテーション)を含む文字列リテラルを指定する場合には、既定義エンティティー参照の'を指定してください。
既定義エンティティー参照の詳細は、“XQueryリファレンス”を参照してください。
A要素のテキストノードの値が「'ABC銀行'」を表すXQuery式
XMLQUERY('/A[text()="'ABC銀行'"]' PASSING 伝票)
XQuery式に空文字または空白文字列のみ指定した場合、XMLQUERY関数はエラーになります。
XQuery式の問合せの評価時にエラーが発生した場合、XMLQUERY関数はエラーになります。
PASSING句の値式にはXQuery式の検索対象となるXMLデータを指定します。
PASSING句の値式のデータ型は、BLOB型であることが必要です。
PASSING句に以下の値式を指定することはできません。
集合関数指定
CAST指定
XMLQUERY関数
ファンクションルーチン
値式に指定するXMLデータは、正しいデータ形式であることが必要です。誤ったデータ形式であることを検出した場合、XMLQUERY関数はNULLを返します。
参照
XMLデータの正しい形式に関しては、“アプリケーション開発ガイド(共通編)”の“SQL/XMLで扱えるデータ形式”を参照してください。
PASSING句を省略、またはPASSING句の値式の値がNULLである場合、XMLQUERY関数の評価結果は不定になります。
値式に動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
PASSING句の値式 | BLOB型 |
使用例
製品番号が100番台の製品を発注している、会社番号が60番台の取引会社の会社名を検索します。
SELECT 会社表.会社番号, XMLQUERY('/取引先会社情報[発注/製品番号/text() >= 100 and 発注/製品番号/text() < 200]/会社名/text()' PASSING 会社表.会社情報) AS 会社名 FROM 会社表 WHERE 会社番号 BETWEEN 60 AND 69
上記の問合せにおける、取引先会社と発注製品の情報を以下に示します。
XMLQUERY関数の指定により、会社表の会社情報列に格納された各XMLデータに対して、XQuery式'/取引先会社情報[発注/製品番号/text() >= 100 and 発注/製品番号/text() < 200]/会社名/text()'が評価されます。XQuery式の評価結果より、XMLQUERY関数は図中の会社番号が61と62の行に対して、XMLデータから抽出した会社名を返します。また、会社番号が63の行に対してはNULLを返します。このSQL文の結果を以下に示します。
会社番号 | 会社名 |
---|---|
61 | アダム電気 |
62 | アイデア商事 |
63 | NULL |