我目前正在使用微软的FOR XML PATH功能以XML格式从MS SQL Server中检索数据。我非常喜欢这个功能,但总是不太放心使用特定于供应商的函数。
其他主要数据库供应商是否有类似的功能?
编辑
让我更具体地说明我正在寻找的功能类型
在MS SQL中,您可以使用以下查询:
SELECT so.id AS '@Id',
so.Code AS '@Code',
cu.Code AS 'Customer/@Code',
cu.Name AS 'Customer/@Name',
(SELECT Item_Num AS '@Item',
pa.Code AS '@PartCode'
FROM tblSalesItem si
LEFT JOIN tblPart pa ON pa.Id = si.Part_Id
WHERE si.SalesOrder_ID = so.Id
FOR XML PATH('SalesItem') , type)
FROM tblSalesOrder so
JOIN tblCustomer cu ON so.customer_id = cu.ID
FOR XML PATH('SalesOrder'), ROOT('SalesOrders')
生成这个XML
<SalesOrders>
<SalesOrder Id="13" Code="C1002 ">
<Customer Code="ROBERTS " Name="Roberts Equipment Inc." />
<SalesItem Item="1" PartCode="FP-0001" />
<SalesItem Item="2" PartCode="FP-0003" />
</SalesOrder>
<SalesOrder Id="15" Code="C1004 ">
<Customer Code="EXBEL-LIFTS" Name="Exbel Lifts Inc." />
<SalesItem Item="1" />
</SalesOrder>
</SalesOrders>
我可以逐列控制元素和属性的使用。我可以创建元素的属性来将相关列分组在一起。我可以使用子查询来生成嵌套元素。您甚至可以使用返回XML的函数生成任意深度的树形结构。