FOR XML 子句的使用准则
FOR XML 子句只有在 SELECT 语句中及受到以下限制时才有效:
无论在 UPDATE、INSERT 或 DELETE 语句、嵌套 SELECT 语句还是其它语句(SELECT INTO、赋值语句)中,FOR XML 在子选择中都无效。例如,不支持下面示例中的子选择:
示例 A
SELECT *
FROM Table1
WHERE ......(SELECT * FROM Table2 FOR XML RAW)
示例 B
DECLARE @doc nchar(3000)
SET @doc = (SELECT * FROM Customers WHERE CustomerID = 'ALFKI' FOR XML RAW)
对于与 COMPUTE BY 或 FOR BROWSE 子句一起使用的任何选择语句,FOR XML 都无效,例如:
SELECT OrderID, UnitPrice
FROM [Order Details]
ORDER BY OrderID COMPUTE SUM(UnitPrice) BY OrderID
当前不支持 GROUP BY 和聚合函数与 FOR XML AUTO 共同使用。例如:
SELECT max(price), min(price), avg(price)
FROM titles
FOR XML AUTO
FOR XML 在用于视图定义或用于返回行集的用户定义函数的 SELECT 语句中无效。例如,不能使用下面的语句:
CREATE VIEW AllOrders AS SELECT * FROM Orders FOR XML AUTO
但是允许如下的语句:
SELECT * FROM ViewName FOR XML AUTO are allowed.
FOR XML 无法用于需要在存储过程中进一步处理的选择语句。
FOR XML 不能与游标一起使用。
一般情况下,FOR XML 无法不能不直接将结果输出到 Microsoft® SQL Server™ 2000 客户端的任何选择语句。