FOR 句 (Transact-SQL)
FOR 句は、BROWSE オプションまたは XML オプションを指定するときに使用します。BROWSE オプションと XML オプションには、関連性はありません。
構文
[ 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' ) ] ]
引数
BROWSE
DB-Library ブラウズ モード カーソルでデータを表示しているときに、更新が許可されます。テーブルに timestamp 列が含まれる場合、テーブルに一意なインデックスがある場合、および SQL Server に送られる SELECT ステートメントの最後に FOR BROWSE オプションがある場合、アプリケーションの中でテーブルを参照できます。メモ : <lock_hint> HOLDLOCK は、FOR BROWSE オプションを含む SELECT ステートメントでは使えません。 FOR BROWSE は、UNION 演算子によって結合された SELECT ステートメントでは使えません。
メモ : テーブルの一意なインデックス キー列が NULL 値を許容し、かつそのテーブルが外部結合の内部にある場合、そのインデックスはブラウズ モードではサポートされません。
- XML
クエリの結果を XML ドキュメントとして返します。RAW、AUTO、EXPLICIT のいずれかの XML モードを指定する必要があります。XML データおよび SQL Server の詳細については、「FOR XML を使用した XML の構築」を参照してください。
- RAW [ ('ElementName') ]
クエリの結果を取得し、結果セット内の各行を、要素タグとして汎用識別子 <row /> が指定されている XML 要素に変換します。必要に応じて、その行要素に名前を指定することもできます。変換結果の XML 出力では、各行に対して生成された行要素として、指定した ElementName が使用されます。詳細については、「RAW モードの使用」および「RAW モードの機能強化」を参照してください。
- AUTO
クエリの結果を単純な入れ子の XML ツリーで返します。FROM 句に含まれる各テーブルは、そのうち少なくとも 1 つの列が SELECT 句の一覧に示され、XML 要素として表されます。SELECT 句に一覧されている列は、該当する要素属性にマップされます。詳細については、「AUTO モードの使用」および「AUTO モードの機能強化」を参照してください。
- EXPLICIT
結果として得られる XML ツリーの形状を明示的に定義することを指定します。このモードを使用する場合は、目的の入れ子に関する追加の情報を明示的に指定できるように、クエリを特別な方法で記述する必要があります。詳細については、「EXPLICIT モードの使用」および「EXPLICIT モードの機能強化」を参照してください。
- XMLDATA
インライン XDR スキーマを返します。ただし、結果にルート要素は追加されません。XMLDATA を指定すると、XDR スキーマはドキュメントに追加されます。
- XMLSCHEMA [ ('TargetNameSpaceURI') ]
インライン XSD スキーマを返します。このディレクティブを指定する場合は、必要に応じて、対象名前空間の URI を指定することもできます。指定した場合は、スキーマにある指定した名前空間が返されます。詳細については、「インライン XSD スキーマの生成」を参照してください。
- ELEMENTS
列を副要素として返します。指定していない場合は、XML 属性にマップされます。このオプションは、RAW、AUTO、および PATH モードでのみサポートされます。詳細については、「RAW モードの機能強化」を参照してください。
- XSINIL
列の値が NULL の場合、xsi:nil 属性が True に設定されている要素を作成します。このオプションは、ELEMENTS ディレクティブでのみ指定できます。詳細については、「XSINIL パラメータを使用した NULL 値に対する要素の生成」を参照してください。
- ABSENT
列の値が NULL の場合、対応する XML 要素を XML 結果に追加しません。このオプションは、ELEMENTS でのみ指定してください。
- PATH [ ('ElementName') ]
結果セットの各行に対して <row> 要素ラッパーを生成します。必要に応じて、<row> 要素ラッパーに要素名を指定することもできます。FOR XML PATH ('') ) などの空文字列を指定すると、ラッパー要素は生成されません。EXPLICIT ディレクティブを使用するよりも、PATH を使用した方が、クエリが単純になる場合があります。詳細については、「PATH モードの使用」を参照してください。
- BINARY BASE64
クエリは、バイナリ データをバイナリ ベース 64 エンコード形式で返します。RAW モードおよび EXPLICIT モードでバイナリ データを取得する場合は、このオプションを指定する必要があります。AUTO モードの場合は、これは既定値です。
- TYPE
クエリは、結果を xml 型として返します。詳細については、「FOR XML クエリの TYPE ディレクティブ」を参照してください。
- ROOT [ ('RootName') ]
単一のトップレベル要素を、結果として生成される XML に追加します。必要に応じて、生成するルート要素名を指定することもできます。オプションのルート名を指定しない場合は、既定の <root> 要素が追加されます。
例
次の例では、FOR XML AUTO
を TYPE
オプションおよび XMLSCHEMA
オプションと共に指定しています。TYPE
オプションを指定しているため、結果セットはクライアントに xml 型として返されます。XMLSCHEMA
オプションは、返される XML データにインライン XSD スキーマが含まれることを指定し、ELEMENTS
オプションは、結果の XML が要素中心であることを指定します。
USE AdventureWorks;
GO
SELECT ContactID, FirstName, LastName, Phone
FROM Person.Contact
WHERE LastName LIKE 'G%'
ORDER BY LastName, FirstName
FOR XML AUTO, TYPE, XMLSCHEMA, ELEMENTS XSINIL;
参照
関連項目
その他の技術情報
FOR XML および OPENXML の使用による XML データのパブリッシュと処理