我目前正在使用Microsoft的FOR XML PATH功能以XML格式从MS SQLServer中提取数据。我真的很喜欢该功能,但是对于使用供应商特定的功能总是感到不舒服。
其他主要数据库供应商有没有类似之处?
让我更详细地介绍我要寻找的功能类型
在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的函数来生成任意深度的树。
FOR XML PATH不在ANSI SQL-92标准中,因此将取决于各个供应商。我不知道在Oracle或MySQL中有任何等效功能。
FOR XML PATH