クエリ内で FOR XML RAW を指定すると、各ローは、<row> 要素として表され、各カラムは、<row> 要素の属性となります。
FOR XML RAW[, ELEMENTS ]
ELEMENTS このパラメータを指定すると、FOR XML RAW は、結果における各カラムに対し属性の代わりに XML 要素を生成します。NULL 値がある場合は、その要素は、生成される XML 文書から省略されます。次のクエリは、<EmployeeID> 要素と <DepartmentName> 要素を生成します。
SELECT Employees.EmployeeID, Departments.DepartmentName FROM Employees JOIN Departments ON Employees.DepartmentID=Departments.DepartmentID FOR XML RAW, ELEMENTS; |
このクエリは、次の結果を返します。
<row> <EmployeeID>102</EmployeeID> <DepartmentName>R & D</DepartmentName> </row> <row> <EmployeeID>105</EmployeeID> <DepartmentName>R & D</DepartmentName> </row> <row> <EmployeeID>160</EmployeeID> <DepartmentName>R & D</DepartmentName> </row> <row> <EmployeeID>243</EmployeeID> <DepartmentName>R & D</DepartmentName> </row> ... |
BINARY、LONG BINARY、IMAGE、VARBINARY カラムのデータは、FOR XML RAW を含むクエリを実行すると、自動的に Base64 エンコード・フォーマットで返されます。
デフォルトでは、NULL 値は、結果から省略されます。for_xml_null_treatment オプションを使用すると、この動作を制御できます。
FOR XML 句を含むクエリで NULL 値が返される方法については、FOR XML と NULL 値を参照してください。
FOR XML RAW は、整形式 XML 文書を返しません。これは、文書に単一のルート・ノードが含まれないためです。<root> 要素が必要な場合は、1 つの方法として、XMLELEMENT 関数を使用して挿入できます。次に例を示します。
SELECT XMLELEMENT( NAME root, (SELECT EmployeeID AS id, GivenName AS name FROM Employees FOR XML RAW)); |
XMLELEMENT 関数の詳細については、XMLELEMENT 関数 [文字列]を参照してください。
XML 文書内で使用される属性名や要素名は、エイリアスを指定して変更できます。次のクエリは、ID 属性の名前を product_ID に変更します。
SELECT ID AS product_ID FROM Products WHERE Color='black' FOR XML RAW; |
このクエリは、次の結果を返します。
<row product_ID="302"/> <row product_ID="400"/> <row product_ID="501"/> <row product_ID="700"/> |
結果の順序は、特に指定しないかぎり、オプティマイザが選択するプランによって決まります。特定の順序で結果を表示したい場合は、次のように、クエリに ORDER BY 句を含めてください。
SELECT Employees.EmployeeID, Departments.DepartmentName FROM Employees JOIN Departments ON Employees.DepartmentID=Departments.DepartmentID ORDER BY EmployeeID FOR XML RAW; |
従業員が所属する部署の情報を取り出したい場合、次のように入力します。
SELECT Employees.EmployeeID, Departments.DepartmentName FROM Employees JOIN Departments ON Employees.DepartmentID=Departments.DepartmentID FOR XML RAW; |
次の XML 文書が返されます。
<row EmployeeID="102" DepartmentName="R & D"/> <row EmployeeID="105" DepartmentName="R & D"/> <row EmployeeID="160" DepartmentName="R & D"/> <row EmployeeID="243" DepartmentName="R & D"/> ... |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |