科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[SQL Server]探讨SQL2000对XML的支持(3)

[SQL Server]探讨SQL2000对XML的支持(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们可以很简单的使用ADO访问数据库中的数据,但是,如果我们想把从数据库中检索得到的数据以XML的格式显示出来的话,就要费点神了,当然,我们可以去找一些现成的应用程序或者是把现有的存储过程修改一下,来完成这个想法。

作者:Wayne 来源:csdn.net 2007年9月15日

关键字: XML SQL Server SQL Server 2000 数据库

  • 评论
  • 分享微博
  • 分享邮件
面我们说的是直接使用HTTP中执行简单的查询,除此之外你还可以执行更加复杂的查询,比如说连接不同的表进行查询,请看下面的例子,在下例中,SELECT 语句连接了 Northwind 数据库的中的 Customers 和 Orders 表,并返回信息。

http://localhost/northwind?sql=SELECT
Customer.CustomerID%2cCustomer.Contact
Name%2c%5bOrder%5d.OrderID+FROM+Customers+
Customer+INNER+JOIN+Orders+%5bOrder%
5d+ON+Customer.CustomerID%3d%5bOrder%
5d.CustomerID+FOR+XML+AUTO&root=Northwind

因为返回的XML文件太长,我就不把它列出来了。

  如果你不想在Customers表和Orders表中出现嵌套的话,SQL Server 2000还提供另一个关键字用来替代AUTO,这个关键字就是RAW。RAW 模式将查询结果集中的每一行转换为带有类属标识符 row 的 XML 元素。为了让您能够深入了解RAW,我再给出一个例子:使用 RAW 模式检索客户和订单信息

  下面的查询返回客户和订单信息。在 FOR XML 子句中指定 RAW 模式。


SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerID
FOR XML RAW

  下面是部分结果:

<row CustomerID="ALFKI" OrderID="10643" OrderDate="1997-08-25T00:00:00"/>

<row CustomerID="ANATR" OrderID="10308" OrderDate="1996-09-18T00:00:00"/>

<row CustomerID="ANATR" OrderID="10625" OrderDate="1997-08-08T00:00:00"/>

<row CustomerID="AROUT" OrderID="10355" OrderDate="1996-11-15T00:00:00"/>

  可以使用外部联接指定上面的查询在结果集中返回所有客户,无论这些客户是否有订单。


   SELECT C.CustomerID, O.OrderID, O.OrderDate
     FROM Customers C LEFT OUTER JOIN Orders O ON C.CustomerID = O.CustomerID ORDER BY C.CustomerID FOR XML RAW

  下面是部分结果:


<row CustomerID="BONAP" OrderID="11076" OrderDate="1998-05-06T00:00:00"/>

<row CustomerID="FISSA"/>

<row CustomerID="PARIS"/>

<row CustomerID="RICSU" OrderID="11075" OrderDate="1998-05-06T00:00:00"/>


  我们还可以使用 HTTP 执行存储过程,比如下面这个名为GetXML的存储过程:


  CREATE PROCEDURE GetXml
   (
    @CustomerID varchar(5)
   )
   AS
    BEGIN
     SELECT CustomerID, CompanyName,ContactName
      FROM Customers
      WHERE CustomerID LIKE @CustomerID + '%'
      FOR XML AUTO
  END


  为了执行这个存储过程并传送相应的参数,我们可以使用下面这段URL,http://localhost/northwind?sql=exec+GetXml+'A'&root=root。这样,我们就能够在更高一层次使用存储过程,并且可以根据最终用户想要得到的结果动态的改变参数值(比如在本例中,我们用的是“A”)。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章