FOR XML モードには、RAW、AUTO、EXPLICIT、PATH を指定できます。 結果の XML の形状を決定します。
重要
FOR XML オプションに対する XMLDATA ディレクティブは非推奨とされます。 RAW モードと AUTO モードの場合は、XSD 世代を使用してください。 EXPLICIT モードでは、XMLDATA ディレクティブに代わる機能はありません。 この機能は、今後のバージョンの Microsoft SQL Server で削除される予定です。 新しい開発作業ではこの機能を使用しないでください。現在この機能を使用しているアプリケーションを変更することを計画してください。
FOR 句 (Transact-SQL) で説明されている基本的な構文を次に示します。
[ FOR { BROWSE | <XML> } ]
<XML> ::=
XML
{
{ RAW [ ('ElementName') ] | AUTO }
[
<CommonDirectives>
[ , { XMLDATA | XMLSCHEMA [ ('TargetNameSpaceURI') ]} ]
[ , ELEMENTS [ XSINIL | ABSENT ]
]
| EXPLICIT
[
<CommonDirectives>
[ , XMLDATA ]
]
| PATH [ ('ElementName') ]
[
<CommonDirectives>
[ , ELEMENTS [ XSINIL | ABSENT ] ]
]
}
<CommonDirectives> ::=
[ , BINARY BASE64 ]
[ , TYPE ]
[ , ROOT [ ('RootName') ] ]
論争
RAW[('ElementName')]
クエリ結果を受け取り、結果セット内の各行を、要素タグとしてジェネリック識別子 ( <row />) を持つ XML 要素に変換します。 必要に応じて、このディレクティブを使用するときに行要素の名前を指定できます。 結果の XML では、指定した ElementName が各行に対して生成される行要素として使用されます。 詳細については、「 FOR XML での RAW モードの使用」を参照してください。
自動
クエリの結果を単純な入れ子の XML ツリーで返します。 SELECT 句に少なくとも 1 つの列がリストされている FROM 句の各テーブルは、XML 要素として表されます。 SELECT 句にリストされている列は、適切な要素属性にマップされます。 詳細については、「 FOR XML での AUTO モードの使用」を参照してください。
明確な
結果として得られる XML ツリーの形状を明示的に定義することを指定します。 このモードを使用すると、必要な入れ子に関する追加情報が明示的に指定されるように、クエリを特定の方法で記述する必要があります。 詳細については、「 FOR XML での EXPLICIT モードの使用」を参照してください。
パス
要素と属性を混在させ、複雑なプロパティを表す追加の入れ子を導入する簡単な方法を提供します。 FOR XML EXPLICIT モードのクエリを使用して、この種の XML を行セットから構築できますが、PATH モードでは、面倒な EXPLICIT モード クエリに代わる単純な方法が提供されます。 PATH モードでは、入れ子になった FOR XML クエリと、 XML 型インスタンスを返す TYPE ディレクティブを記述する機能と共に、複雑さの少ないクエリを記述できます。 ほとんどの EXPLICIT モード クエリを記述する代わりに、この方法を使用できます。 既定では、PATH モードでは、結果セット内の各行に対して <row> 要素ラッパーが生成されます。 必要に応じて、要素名を指定できます。 その場合、指定した名前がラッパー要素名として使用されます。 空の文字列 (FOR XML PATH ('')) を指定した場合、ラッパー要素は生成されません。 詳細については、「 FOR XML での PATH モードの使用」を参照してください。
XMLDATA
インライン XML-Data 縮小 (XDR) スキーマを返すように指定します。 スキーマは、インライン スキーマとしてドキュメントの先頭に付加されます。 作業サンプルについては、「 FOR XML で RAW モードを使用する」を参照してください。
XMLスキーマ
インライン W3C XML スキーマ (XSD) を返します。 必要に応じて、このディレクティブを指定するときにターゲット名前空間 URI を指定できます。 これにより、スキーマ内の指定した名前空間が返されます。 詳細については、「 Generate an Inline XSD Schema」を参照してください。 作業サンプルについては、「 FOR XML で RAW モードを使用する」を参照してください。
元素
ELEMENTS オプションを指定すると、列はサブ要素として返されます。 指定していない場合は、XML 属性にマップされます。 このオプションは、RAW、AUTO、および PATH モードでのみサポートされています。 このディレクティブを使用する場合は、必要に応じて XSINIL または ABSENT を指定できます。 XSINIL は、null 列の値に 対して xsi:nil 属性が True に設定されている要素を作成することを指定します。 既定または ABSENT が ELEMENTS と共に指定されている場合、NULL 値の要素は作成されません。 作業中のサンプルについては、「 FOR XML で RAW モードを使用 する」および「 FOR XML で AUTO モードを使用する」を参照してください。
BINARY BASE64
BINARY Base64 オプションが指定されている場合、クエリによって返されるすべてのバイナリ データは base64 でエンコードされた形式で表されます。 RAW モードと EXPLICIT モードを使用してバイナリ データを取得するには、このオプションを指定する必要があります。 AUTO モードでは、バイナリ データは既定で参照として返されます。 作業サンプルについては、「 FOR XML で RAW モードを使用する」を参照してください。
タイプ
クエリが xml 型として結果を返すように指定します。 詳細については、「 FOR XML クエリの TYPE ディレクティブ」を参照してください。
ROOT [('RootName')]
結果の XML に最上位レベルの要素を 1 つ追加することを指定します。 必要に応じて、生成するルート要素名を指定することもできます。 既定値は "root" です。
こちらもご覧ください
FOR XML で RAW モードを使用する
FOR XML で AUTO モードを使用する
FOR XML で EXPLICIT モードを使用する
FOR XML で PATH モードを使用する
SELECT (Transact-SQL)
FOR XML (SQL Server)