XMLCAST 指定は、データ・タイプによって指定されたタイプにキャストされたキャスト・オペランド (第 1 オペランド) を戻します。
XMLCAST は、非 XML データ・タイプと XML データ・タイプ間の変換を含む、XML 値に関するキャストをサポートします。
キャストがサポートされていない場合、エラー (SQLSTATE 22003) が戻されます。
xmlcast-specification
|--XMLCAST--(--+-expression-------+--AS--data-type--)-----------|
+-NULL-------------+
'-parameter-marker-'
- expression
- キャスト・オペランドが式 (パラメーター・マーカーまたは NULL ではなく) である場合、
結果は、指定されたターゲット・データ・タイプに変換された引数値です。
式またはターゲット・データ・タイプは、XML データ・タイプでなければなりません (SQLSTATE 42846)。
- NULL
- キャスト・オペランドがキーワード NULL である場合、ターゲット・データ・タイプは XML データ・タイプでなければなりません (SQLSTATE 42846)。
結果はヌル XML 値になります。
- parameter-marker
- キャスト・オペランドがパラメーター・マーカーである場合、ターゲット・データ・タイプは XML でなければなりません (SQLSTATE 42846) パラメーター・マーカーは通常は式と見なされますが、ここでは特別な意味を持つため別個に説明します。
キャスト・オペランドがパラメーター・マーカーである場合、指定されたデータ・タイプは、
指定された (XML) データ・タイプに置き換えが割り当て可能である (記憶割り当てを使用して) ことを示す合意であると見なされます。
このようなパラメーター・マーカーは型付きパラメーター・マーカーと見なされ、関数解決、選択リストの記述操作、または列割り当ての目的で他の型付き値と同様に扱われます。
- data-type
- 既存の SQL データ・タイプの名前。
この名前が修飾されていない場合は、SQL パスを使用してデータ・タイプ解決が行われます。
データ・タイプに長さや精度と位取りのような属性が関連付けられている場合、data-type の値を指定する際に、これらの属性を組み込む必要があります。
指定されていない場合、CHAR は長さ 1 にデフォルト解釈され、DECIMAL は精度 5 および位取り 0 にデフォルト解釈されます。
サポートされるデータ・タイプに関する制限は、
指定したキャスト・オペランドに基づいて適用されます。
- キャスト・オペランドが式の場合にサポートされるターゲット・データ・タイプは、
キャスト・オペランドのデータ・タイプ (ソース・データ・タイプ) によって異なります。
- キャスト・オペランドがキーワード NULL である場合、ターゲット・データ・タイプは XML でなければなりません。
- キャスト・オペランドがパラメーター・マーカーである場合、ターゲット・データ・タイプは XML でなければなりません。
注: 非 Unicode データベースでのサポート: XMLCAST が XML 値を SQL データ・タイプに変換するのに使用されるとき、コード・ページ変換が実行されます。 キャスト式のエンコードが UTF-8 からデータベース・コード・ページに変換されます。 データベース・コード・ページには存在しない元の式の文字は、この変換の結果として、置換文字に置き換えられます。
例
- ヌル XML 値を作成する。
XMLCAST(NULL AS XML)
- XMLQUERY 式から抽出した値を INTEGER に変換する。
XMLCAST(XMLQUERY('$m/PRODUCT/QUANTITY'
PASSING xmlcol AS "m") AS INTEGER)
- XMLQUERY 式から抽出した値を可変長文字ストリングに変換する。
XMLCAST(XMLQUERY('$m/PRODUCT/ADD-TIMESTAMP'
PASSING xmlcol AS "m") AS VARCHAR(30))
- SQL スカラー副照会から抽出した値を XML 値に変換する。
XMLCAST((SELECT quantity FROM product AS p
WHERE p.id = 1077) AS XML)