XML の割り当て
割り当てのターゲットが XML の場合には、以下の規則が当てはまります。
XML 割り当ての一般規則として、XML 値だけを XML 列または XML 変数に割り当てることができます。 その規則の例外は次のとおりです。
- 入力 XML 変数を処理する場合: これは XML 割り当て規則の特殊ケースです。変数はストリング値を基にしているためです。 SQL 内で XML への割り当てを行うため、ストリング値が暗黙で解析されて XML 値になります。その際、CURRENT IMPLICIT XMLPARSE OPTION 特殊レジスターの設定が使用されます。 これにより、空白を残すが除去するかが決まります。ただし、変数が XMLVALIDATE 関数の引数である場合は例外で、その場合は不要な空白が常に除去されます。
- データ・タイプ XML の入力パラメーター・マーカーにストリングを割り当てる場合: 入力パラメーター・マーカーの暗黙的または明示的なデータ・タイプが XML の場合、そのパラメーター・マーカーに割り当てる値は、文字ストリング変数、グラフィック・ストリング変数、またはバイナリー・ストリング変数のいずれでも構いません。 その場合、ストリング値が暗黙で解析されて XML 値になります。その際、CURRENT IMPLICIT XMLPARSE OPTION 特殊レジスターの設定が使用されます。 これにより、空白を残すが除去するかが決まります。ただし、パラメーター・マーカーが XMLVALIDATE 関数の引数である場合は例外で、その場合は不要な空白が常に除去されます。
- データ変更ステートメントで XML 列にストリングを直接割り当てる場合: データ変更ステートメントでタイプが XML の列に直接割り当てを行う場合、割り当てられる式は文字ストリング、グラフィック・ストリング、またはバイナリー・ストリングにもできます。 その場合、XMLPARSE (DOCUMENT expression STRIP WHITESPACE) の結果が、ターゲット列に割り当てられます。 サポートされるストリングのデータ・タイプは、XMLPARSE 関数用のサポートされている引数で定義されます。 この例外は、XML タイプの SQL パラメーターにも適用されます。
- 取り出し時に XML をストリングに割り当てる場合: 組み込み SQL 内で FETCH または SELECT INTO を使用して、XML 値を変数に取り出す場合、その変数のデータ・タイプは、CLOB、DBCLOB、または BLOB のいずれでも構いません。 XML 値は、変数の CCSID でエンコードされたストリングに暗黙的に直列化されます。 他のアプリケーション・プログラミング・インターフェース (CLI、JDBC、または .NET など) を使用する場合、該当するアプリケーション・プログラミング・インターフェースでサポートされている文字、グラフィック、またはバイナリー・ストリングのタイプで XML 値を取り出すことができます。 これらのすべての場合において、XML値は、 XML値で説明されているように、QAQQINIファイルによって決定されたCCSIDでエンコードされた文字列に暗黙的にシリアライズされます。
FETCH、SELECT INTO、SET、および VALUES INTO ステートメントの場合、文字ストリング、グラフィック・ストリング、またはバイナリー・ストリングの値を XML 変数に取り出すことはできません。 INSERT、UPDATE、MERGE、SET、VALUES INTO、および CALL ステートメントの場合には、XML 変数内の値を、データ・タイプが文字、グラフィック、またはバイナリー・ストリングの列、SQL 変数、または SQL パラメーターに割り当てることはできません。