使用SQL Server 2000将现有代码作为Web服务提供

ai970453835

ai970453835

2016-02-19 17:44

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的使用SQL Server 2000将现有代码作为Web服务提供,过去的都会过去,迎接崭新的开始,释放更美好的自己。

  一、简介

  Microsoft SQL Server 2000的 XML功能可以简化将现有代码作为 Web服务提供的任务。本文集中讨论了传入和传出 Transact SQL代码的数据与 XML消息(在 Web服务客户机和服务器之间使用)之间的转换。

  二、SQL Server 2000中的现有代码

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  SQL Server 2000的 XML功能简化了将现有 Transact SQL代码作为 Web服务提供的过程。这依赖于 SQL Server 2000中的两项 XML功能:

  1.对 Transact SQL的扩展可将关系型数据转换为 XML,并且可以对传入的 XML进行语法分析。利用 ISAPI模板功能,可将传入的 HTTP请求应用于 Transact SQL代码,并且可以使用 XSL样式表对传出的 XML进行转换。只要可以使用 FOR XML子句选定数据,SQL Server就可以将 XML返回到 XML模板。

  2.SQL Server 2000 XML模板

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  SQL Server 2000 XML模板以透明方式执行以下任务:

  对传入的 HTTP请求进行解码将参数应用于 Transact SQL查询执行查询使用 XSL转换传出的 XML读数据以下示例执行 ISAPI模板中指定的 Transact SQL。如果必要,可将 HTTP请求传递到 Transact SQL代码,并由该代码进行语法分析。根据模板中指定的 .xsl文件,返回的 XML将被转换为 SOAP并返回给 Web服务的客户:

  

Exec GetOrdersXML以下是模板中引用的 XSL样式表,它将存储过程中的 XML转换为 SOAP:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:m="Some-URI"

  最后,以下存储过程代码在 Transact SQL SELECT语句中使用 FOR XML EXPLICIT子句来返回 XML。订单和订单详细信息从单独的表中选择,然后合并到 XML层次中:

  /*订单是父 XML元素 */

  

Select 1 as Tag, NULL as Parent,Orders.OrderId AS [Order!1!OrderId],Orders.OrderStatus AS [Order!1!OrderStatus],Orders.OrderDate AS [Order!1!OrderDate],Orders.SubTotal AS [Order!1!SubTotal],Orders.Tax AS [Order!1!Tax],Orders.ShippingHandling AS [Order!1!ShippingHandling],Orders.ShipToName AS [Order!1!ShipToName],Orders.ShipToAddressId AS [Order!1!ShipToAddressId],NULL AS [OrderDetail!2!OrderDetailId],NULL AS [OrderDetail!2!OrderId],NULL AS [OrderDetail!2!ItemId],NULL AS [OrderDetail!2!UnitPrice],NULL AS [OrderDetail!2!Quantity]from OrdersUNION ALL

  /*订单详细信息是子 XML元素 */

  

select 2 as tag, 1 as parent,Orders.OrderId AS [Order!1!OrderId],NULL AS [Order!1!OrderStatus],NULL AS [Order!1!OrderDate],NULL AS [Order!1!SubTotal],NULL AS [Order!1!Tax],NULL AS [Order!1!ShippingHandling],NULL AS [Order!1!ShipToName],NULL AS [Order!1!ShipToAddressId],OrderDetails.OrderDetailId AS [OrderDetail!2!OrderDetailId],OrderDetails.OrderId AS [OrderDetail!2!OrderId],OrderDetails.ItemId AS [OrderDetail!2!ItemId],OrderDetails.UnitPrice AS [OrderDetail!2!UnitPrice],OrderDetails.Quantity AS [OrderDetail!2!Quantity]from Orders, OrderDetailswhere Orders.OrderId = OrderDetails.OrderIdORDER BY [Order!1!OrderId],[OrderDetail!2!OrderDetailId]For XML EXPLICIT 写数据。

  以下示例中,通过 HTTP请求提供表示层次行数据的 XML,然后将其传递到 ISAPI模板中指定的 Transact SQL代码。在存储过程中对 XML进行语法分析,并进行相应的写入操作:

  

Create Procedure InsertOrder@Order NVARCHAR(4000) = NULL,@OrderId int OutputDECLARE @hDoc INTDECLARE @PKId INTBEGIN TRANSACTION

/*将 XML载入文档以进行分析 */

  

EXEC sp_xml_preparedocument @hDoc OUTPUT, @Order

  /*插入订单标头 */

  

INSERT Orders(CustomerId,OrderDate,ShipToName,ShipToAddressId,OrderStatus)SELECT *FROM OPENXML(@hDoc, '/NewDataSet/Orders')WITH ( CustomerId int 'CustomerId',OrderDate Datetime 'OrderDate',ShipToName nvarchar(40) 'ShipToName',ShipToAddressId int 'ShipToAddressId',OrderStatus int 'OrderStatus')SELECT @PKId = @@IDENTITY

  /*插入订单详细信息 */

  

INSERT OrderDetails (OrderId,ItemId,UnitPrice,Quantity)SELECT @PKId as OrderId, ItemId, UnitPrice, QuantityFROM OPENXML(@hDoc, '/NewDataSet/Details')WITH ( ItemId int 'ItemId',UnitPrice money 'UnitPrice',Quantity int 'Quantity')

  /*指定输出参数的值 */

  

Select @OrderId = @PKIdCOMMIT TRANSACTION

  /*清除 XML文档 */

  

EXEC sp_xml_removedocument @hDoc

展开更多 50%)
分享

猜你喜欢

使用SQL Server 2000将现有代码作为Web服务提供

编程语言 网络编程
使用SQL Server 2000将现有代码作为Web服务提供

使用SQL Server 将现有代码作为Web 服务提供

SQLServer
使用SQL Server 将现有代码作为Web 服务提供

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server 本机 Web 服务的使用方案

SQLServer
SQL Server 本机 Web 服务的使用方案

将XML文件导入SQL Server 2000

SQLServer
将XML文件导入SQL Server 2000

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL Server为Web浏览器提供图像

SQLServer
SQL Server为Web浏览器提供图像

用SQL Server为Web浏览器提供图像

SQLServer
用SQL Server为Web浏览器提供图像

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SQL Server存储过程编写和优化措施

SQL Server存储过程编写和优化措施

别以为你有多难忘 - QQ伤感分组

别以为你有多难忘 - QQ伤感分组
下拉加载更多内容 ↓