怎样使用SQL2000将现有代码作为Web服务提供(2)_Mssql数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:详解SQL Server中数据库快照的工作原理
数据库快照是怎样工作的 可以使用典型的数据库命令CREATE DATABASE语句来生成一个数据库快照,在声明中有一个源数据库快照的附加说明。当快照被建立时,同时生成一个稀疏文件。这个文件(只能使用在NTFS卷中)在初始化的时候并没有磁盘空间分配给它尽管你可能

/* 订单是父 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 Orders

UNION 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, OrderDetails

where Orders.OrderId = OrderDetails.OrderId

ORDER 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 Output

-

DECLARE @hDoc INT

DECLARE @PKId INT

BEGIN 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, Quantity

FROM OPENXML(@hDoc, '/NewDataSet/Details')

WITH ( ItemId int 'ItemId',

UnitPrice money 'UnitPrice',

Quantity int 'Quantity')

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

Select @OrderId = @PKId

COMMIT TRANSACTION

/* 清除 XML 文档 */

EXEC sp_xml_removedocument @hDoc

总结

本文以及附带的示例介绍了有关数据转换的信息。通过数据转换,可以使用 SQL Server 2000 的 XML 功能将现有 Transact SQL 代码作为 Web 服务提供。本文集中讨论了传入和传出 Transact SQL 代码的数据与 SOAP 消息(在 Web 服务客户机和服务器之间使用)之间的转换。

这些解决方案的性能各异,并且受所传递的数据大小影响。在本系列后面的文章中,我们将对这些实现方法进行比较。

评估现有代码是否适合作为 Web 服务时,接口只不过是应当考虑的诸多因素之一。应考虑的其它因素包括安全性(包括授权、身份验证和加密)、事务模型、状态模型、返回错误和结果的方式,以及代码是同步还是异步执行,等等。

分享:SQL Server记录轮班的技巧
例:公司员工采取三个轮班制度:凌晨0:00到早上8:00为第一班,早上8:00到下午4:00为第二班,下午4:00到晚上12:00为第三班。 员工使用电子时钟进行签名,这种电子签名可以自动将记录添加到SQL Server数据库中。但是,有时候,需要增加一个夜班;即使这

共2页上一页12下一页
来源:模板无忧//所属分类:Mssql数据库教程/更新时间:2009-06-25
相关Mssql数据库教程