怎樣使用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數據庫教程