当您在查询中指定 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> ... |
在您执行包含 FOR XML RAW 的查询时,BINARY、LONG BINARY、IMAGE 和 VARBINARY 列中的数据会自动以 base64 编码格式返回。
缺省情况下,结果中会忽略 NULL 值。此行为是由 for_xml_null_treatment 选项控制的。
有关如何在包含 FOR XML 子句的查询中返回 NULL 值的信息,请参见FOR XML 和 NULL 值。
FOR XML RAW 不会返回结构完好的 XML 文档,因为该文档没有单一的根节点。如果需要 <root> 元素,可以使用 XMLELEMENT 函数插入一个。例如,
SELECT XMLELEMENT( NAME root, (SELECT EmployeeID AS id, GivenName AS name FROM Employees FOR XML RAW)); |
有关 XMLELEMENT 函数的信息,请参见XMLELEMENT 函数 [String]。
通过指定别名,可以更改 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 |