FOR XML 句の基本構文
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 モードの使用」を参照してください。AUTO
クエリの結果を、単純な入れ子構造の XML ツリーで返します。 1 つ以上の列が SELECT 句にリストされている FROM 句の各テーブルは、XML 要素として表されます。 SELECT 句にリストされている列は、該当する要素属性にマップされます。 詳細については、「FOR XML での AUTO モードの使用」を参照してください。EXPLICIT
結果の XML ツリーの構造を明示的に定義することを指定します。 このモードを使用する場合は、クエリを特殊な方法で記述することにより、目的の入れ子構造に関して追加情報を明示的に指定する必要があります。 詳細については、「FOR XML での EXPLICIT モードの使用」を参照してください。PATH
PATH モードを使用すると、要素と属性を組み合わせた使用が容易になり、入れ子構造を使用することで、複雑なプロパティも容易に表現できるようになります。 FOR XML EXPLICIT モードのクエリを使用してこのような XML を行セットから作成することもできますが、煩雑になりかねない EXPLICIT モードのクエリに比べて PATH モードでは同じことを簡潔に行うことができます。 PATH モードに、入れ子の FOR XML クエリと、xml 型のインスタンスを返す TYPE ディレクティブを組み合わせることで、簡潔なクエリを記述できます。 この方法により、EXPLICIT モードのクエリの大半を書き直すことができます。 既定で、PATH モードは結果セットの行ごとに <row> 要素ラッパーを生成します。 要素名は、必要に応じて指定できます。 要素名を指定すると、指定した名前が囲み要素名として使用されます。 空の文字列 (FOR XML PATH ('')) を指定すると、囲み要素は生成されません。 詳細については、「FOR XML での PATH モードの使用」を参照してください。XMLDATA
インライン XDR (XML-Data Reduced) スキーマが返されることを指定します。 このスキーマは、ドキュメントの前にインライン スキーマとして付加されます。 作業用サンプルについては、「FOR XML での RAW モードの使用」を参照してください。XMLSCHEMA
インライン W3C XML スキーマ (XSD) を返します。 このディレクティブを指定する場合は、必要に応じて対象名前空間 URI を指定できます。 これにより、スキーマで指定した名前空間が返されます。 詳細については、「インライン XSD スキーマの生成」を参照してください。 作業用サンプルについては、「FOR XML での RAW モードの使用」を参照してください。ELEMENTS
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 モードの使用」を参照してください。TYPE
クエリが結果を xml 型で返すことを指定します。 詳細については、「FOR XML クエリの TYPE ディレクティブ」を参照してください。ROOT [('RootName')]
結果の XML に、1 つの最上位要素が追加されることを指定します。 必要に応じて、生成するルート要素名を指定できます。 既定値は "root" です。