SELECT * FROM tbl_TimeArrange order by TimeType for xml auto,elements 如上, 好象跟XML有关,但这种写法如何学习呢,很奇怪,这种结合和这种反馈值,用于网站的三层开发之中,页面文件用Vbscript写的,而后台代码又是C#写的,太奇怪了,请大家帮忙,给我指条路吧
检索和编写 XML 数据
可以执行 SQL 查询返回 XML 格式而不是标准行集的结果。可以直接或从存储过程中执行这些查询。若要直接检索结果,请使用 SELECT 语句的 FOR XML 子句,并在 FOR XML 子句中指定 XML 模式:RAW、AUTO 或 EXPLICIT。
例如,下面的 SELECT 语句从 Northwind 数据库的 Customers 和 Orders 表中检索信息。下面的查询在 FOR XML 子句中指定 AUTO 模式:
SELECT Customers.CustomerID, ContactName, CompanyName,
Orders.CustomerID, OrderDate
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
AND (Customers.CustomerID = N'ALFKI'
OR Customers.CustomerID = N'XYZAA')
ORDER BY Customers.CustomerID
FOR XML AUTO
尽管可用 FOR XML 子句检索 XML 文档形式的数据,但也可用 Transact-SQL OPENXML 函数插入以 XML 文档形式表示的数据。OPENXML 是类似于表或视图的行集提供程序,用于提供内存中 XML 文档上的行集。OPENXML 通过提供 XML 文档内部表示法的行集视图,允许访问 XML 数据,就好象它是关系行集一样。行集中的记录可以存储在数据库表中。OPENXML 可以在 SELECT 和 SELECT INTO 语句中使用,在这些语句中可以指定源表或视图。
下例说明 OPENXML 在 INSERT 和 SELECT 语句中的用法。示例 XML 文档由 <Customers> 和 <Orders> 元素组成。首先,sp_xml_preparedocument 存储过程分析 XML 文档。分析后的文档是 XML 文档各节点(元素、特性、文本、注释等)的树型表示法。然后 OPENXML 引用这个经过分析的 XML 文档并提供该 XML 文档的全部或部分内容的行集视图。使用 OPENXML 的 INSERT 语句从而可将数据从这样的行集插入数据库表。可用几个 OPENXML 调用提供 XML 文档各部分的行集视图并对它们进行处理,例如,将它们插入不同的表中(该过程也称为"将 XML 拆分到表中")。在下例中,一个 XML 文档被这样拆分:使用两个 INSERT 语句将 <Customers> 元素存储在 Customers 表中并将 <Orders> 元素存储在 Orders 表中。
下例还显示带有 OPENXML 的 SELECT 语句从 XML 文档检索 CustomerID 和 OrderDate。
DECLARE @hDoc int
EXEC sp_xml_preparedocument @hDoc OUTPUT,
N'<ROOT>
<Customers CustomerID="XYZAA" ContactName="Joe"
CompanyName="Company1">
<Orders CustomerID="XYZAA"
OrderDate="2000-08-25T00:00:00"/>
<Orders CustomerID="XYZAA"
OrderDate="2000-10-03T00:00:00"/>
</Customers>
<Customers CustomerID="XYZBB" ContactName="Steve"
CompanyName="Company2">No Orders yet!
</Customers>
</ROOT>'
-- Use OPENXML to provide rowset consisting of customer data.
INSERT Customers
SELECT *
FROM OPENXML(@hDoc, N'/ROOT/Customers')
WITH Customers
-- Use OPENXML to provide rowset consisting of order data.
INSERT Orders
SELECT *
FROM OPENXML(@hDoc, N'//Orders')
WITH Orders
-- Using OPENXML in a SELECT statement.
SELECT * FROM OPENXML(@hDoc, N'/ROOT/Customers/Orders') with (CustomerID nchar(5) '../@CustomerID', OrderDate datetime)
-- Remove the internal representation of the XML document.
EXEC sp_xml_removedocument @hDoc
下例显示出前面由 sp_xml_pareparedocument 创建的 XML 文档经过分析的 XML 树状结构。