【发布时间】:2018-01-25 04:43:15
【问题描述】:
我需要这样的输出
<Employee EmpID="4">
<FirstName>Rob</FirstName>
<LastName>Walters</LastName>
</Employee>
<Employee EmpID="168">
<FirstName>Rob</FirstName>
<MiddleName>T</MiddleName>
<LastName>Caron</LastName>
</Employee>
但是执行此操作的 SQL:
SELECT e.EmployeeID AS "@EmpID",
c.FirstName,
c.MiddleName, c.LastName
FROM Employee AS e
INNER JOIN Contact AS c
ON c.ContactID = e.ContactID
WHERE c.FirstName = 'Ross'
FOR XML PATH (''), ROOT ('Employees');
返回此错误:
SQL Server Database Error: Row tag omission (empty row tag name) cannot be used with attribute-centric FOR XML serialization.
查看 SQLFiddle:
【问题讨论】:
-
SELECT (SELECT e.EmployeeID AS "@EmpID" FOR XML PATH ('EmployeeID'), TYPE), c.FirstName, c.MiddleName, c.LastName ... FOR XML PATH ('Employee'), ROOT ('Employees');可能是您所追求的。 -
嘿@ZLK 谢谢,但不是这样...您的代码的结果是:
<Employee><Employee EmpID="256"/><FirstName>Ross</FirstName><MiddleName></MiddleName><LastName>Geller</LastName></Employee>SQLFiddle 但我需要<Employee EmpID="256"><FirstName>Ross</FirstName><MiddleName></MiddleName><LastName>Geller</LastName></Employee> -
呃,那么您只需将当前查询中的
for xml path ('')更改为for xml path ('Employee')。 -
@ZLK 这很好用,谢谢....SQLFiddle
标签: sql-server xml for-xml-path for-xml